精华内容
下载资源
问答
  • 对一组数据进行分组
    千次阅读
    2021-11-01 12:40:24
    /**
         * 将一组数据固定分组,每组n个元素
         *
         * @param source 要分组的数据源
         * @param limit      每组n个元素
         * @param <T>
         * @return
         */
        public static <T> List<List<T>> fixedGroup(List<T> source, int limit) {
            if (null == source || source.size() == 0 || limit <= 0)
                return null;
            List<List<T>> result = new ArrayList<List<T>>();
            int remainder = source.size() % limit;
            int size = (source.size() / limit);
            for (int i = 0; i < size; i++) {
                List<T> subset = null;
                subset = source.subList(i * limit, (i + 1) * limit);
                result.add(subset);
            }
            if (remainder > 0) {
                List<T> subset = null;
                subset = source.subList(size * limit, size * limit + remainder);
                result.add(subset);
            }
            return result;
        }

    更多相关内容
  • 对数据进行分组

    千次阅读 2020-12-29 05:14:32
    您可以创建以在字段中合并相关成员。例如,如果您正在使用个显示各科平均考试分数的视图,则您可能需要将某些科目分组在一起以创建科目...对于更正数据错误(例如,将 CA、Calif. 和 California 合并成个数...

    您可以创建组以在字段中合并相关成员。例如,如果您正在使用一个显示各科平均考试分数的视图,则您可能需要将某些科目分组在一起以创建科目类别。“English”和“History”可合并到“Liberal Arts Majors”组中,而“Biology”和“Physics”可分组为“Science Majors”。

    组对于更正数据错误(例如,将 CA、Calif. 和 California 合并成一个数据点)以及回答“假设”类型的问题(例如,“如果将 East 和 West 地区合并在一起,会怎么样?”)十分有用。

    创建组

    有多种创建组的方式。您可以利用“数据”窗格中的字段来创建组,或者通过在视图中选择数据,然后单击组图标来创建组。

    通过在视图中选择数据来创建组

    在视图中,选择一个或多个数据点,然后在出现的工具提示上单击组图标

    注意: 您也可以在工作区顶部的工具栏上选择组图标。

    如果视图中有多个详细信息级别,则必须选择级别才能组合成员。您可以选择对所有维度进行组合,也可以选择只对一个维度进行组合。

    利用“数据”窗格中的字段来创建组

    在“数据”窗格中,右键单击字段,然后选择“创建” >“组”。

    在“创建组”对话框中,选择要分组的多个成员,然后单击“分组”。

    所选的成员将合并为单个组。默认名称是使用合并的成员名称创建的。

    要重命名组,请在列表中选择它,然后单击“重命名”。

    提示:您可以使用对话框右下角的“查找”选项搜索成员。(仅限 Tableau Desktop)

    包括其他组

    在 Tableau 中创建组时,您可以选择将所有剩余或未分组的成员归入到“其他”组中。

    “包括其他”选项对于突出显示某些组或将特定组与其他所有组进行比较很有用。例如,如果有一个显示销售与利润产品类别的视图,则可能需要在视图中突出显示高低绩效类别,并将所有其他类别归入到“其他”组中。

    包括其他

    不包括其他

    要包括其他组,请执行以下操作:

    在“数据”窗格中,右键单击组字段,并选择“编辑组”。

    在“编辑组”对话框中,选择“包括其他”。

    编辑组

    在创建分组字段后,您可以在组中添加和删除成员、创建新组、更改默认组名称以及更改分组字段的名称。您可以直接在视图中进行某些更改,而其他更改则通过“编辑组”对话框进行。

    要将成员添加到现有组,请执行以下操作:

    在“数据”窗格中,右键单击组字段,然后单击“编辑组”。

    在“编辑组”对话框中,选择一个或多个成员并将其拖到您想要的组中。

    单击“确定”。

    要从现有组中删除成员,请执行以下操作:

    在“数据”窗格中,右键单击组字段,然后单击“编辑组”。

    在“编辑组”对话框中,选择一个或多个成员,然后单击“取消分组”。

    成员将从当前组中删除。如果您有“其他”组,则会向其添加成员。

    单击“确定”。

    要在组字段中创建新组,请执行以下操作:

    在“数据”窗格中,右键单击组字段,然后单击“编辑组”。

    在“编辑组”对话框中,选择一个或多个成员,然后单击“分组”。

    单击“确定”。

    注意: 要重命名组,请在“编辑组”对话框中选择组,然后单击“重命名”。

    另请参见

    展开全文
  • List的数据进行分组

    千次阅读 2019-12-31 15:45:36
    :我们平常在工作的时候可能会遇到要List里面的数据进行分组在jdk1.8有方法帮我们解决,而在1.8之前我们要实现这样的功能就需要自己手动实现分组 我们先定义个User类 public class User { private int id; ...

    对List的数据进行分组

    一:我们平常在工作的时候可能会遇到要对List里面的数据进行分组,在jdk1.8中有方法帮我们解决,而在1.8之前我们要实现这样的功能就需要自己手动实现分组

    我们先定义一个User类

    public class User {
        private int id;
        private String contractName;
    
        public User(int id, String contractName) {
            this.id = id;
            this.contractName = contractName;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getContractName() {
            return contractName;
        }
    
        public void setContractName(String contractName) {
            this.contractName = contractName;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", contractName='" + contractName + '\'' +
                    '}';
        }
    }
    

    我们先实现自定义List数据分组

    public static List<User> listDataSort(List<User> list){
            List<User> transformList=new ArrayList<User>();
            //创建一个map,来让list分组把一个List<User>分成多个List<User>
            Map<Integer,List<User>> map=new HashMap<Integer,List<User>>();
            //遍历传进来的list
            for (User user : list) {
                //如果map的某个key值已经存在同样的userId,则把这个user添加到这个key所在的List<User>
                if(map.containsKey(user.getId())){
                    map.get(user.getId()).add(user);
                }
                else{
                    //如果没有相同的id,就新创建一个List
                    List<User> newList=new ArrayList<User>();
                    //添加数据
                    newList.add(user);
                    map.put(user.getId(),newList);
                }
            }
            /*
            把Map转换成List<List<User>>,为什么会变成List<List<User>>,原因在于
            map是以多个userId为键值,存储多个List<User>,map.values转换成list就会变成
            List<List<User>>
             */
            List<List<User>> lists=new ArrayList<List<User>>(map.values());
            //遍历lists
            for (List<User> users : lists) {
                for (User user : users) {
                    //现在添加进来的User都是分好组的
                    transformList.add(user);
                }
            }
            return transformList;
        }
    

    进行测试

    public static void main(String[] args) {
            List<User> list=new ArrayList<User>();
            list.add(new User(1,"一号合同"));
            list.add(new User(2,"一号合同"));
            list.add(new User(1,"二号合同"));
            list.add(new User(3,"一号合同"));
            list.add(new User(3,"二号合同"));
            list.add(new User(2,"二号合同"));
            System.out.println("分组前:"+list);
            System.out.println("分组后:"+listDataSort(list));
        }
    

    在这里插入图片描述

    利用jdk1.8的新方法进行分组

    public static List<User> groupList(List<User> users) {
            List<User> transformList=new ArrayList<User>();
            //创建一个List<List<User>>来接收工具排序后遍历出来的多个List<User>
            List<List<User>> lists=new ArrayList<List<User>>();
            //jdk1.8新增加的List.stream(),利用流来操作
            /*
            * stream()是把List转换成流
            * collect()是把流转换回集合
            * Collectors.groupingBy()对collect进行分组
            * User::getId,根据User对象的getId进行分组
            * Collectors.toList() 把每一组转换成List集合
            * forEach() 进行遍历,内部自定义方法 () -> {} 这是lambada表达式,遍历出每个List<User>
            * 把每个List<User>放进lists
            * forEach里面的id 可以写成任何字符串,比如s aa,bb等,
            * 因为我们是根据id分组的,所以写成id,usersById也可以写成任何值,
            * 比如s aa,bb等,lambada是自动填充数据的
            * */
            users.stream().collect(Collectors.groupingBy(User::getId,Collectors.toList()))
                    .forEach((id,usersById) -> {
                        lists.add(usersById);
                    });
            if(lists!=null){
                for (List<User> list : lists) {
                    for (User user : list) {
                        transformList.add(user);
                    }
                }
            }
            return transformList;
        }
    

    进行测试

    public static void main(String[] args) {
            List<User> list=new ArrayList<User>();
            list.add(new User(1,"一号合同"));
            list.add(new User(2,"一号合同"));
            list.add(new User(1,"二号合同"));
            list.add(new User(3,"一号合同"));
            list.add(new User(3,"二号合同"));
            list.add(new User(2,"二号合同"));
            System.out.println("分组前:"+list);
            System.out.println("分组后:"+groupList(list));
        }
    

    在这里插入图片描述
    ``

    展开全文
  • MySQL分组查询每最新的数据

    千次阅读 2021-01-21 07:02:09
    开发中经常会遇到,分组查询最新数据的问题,比如下面这张表(查询每个地址最新的条记录):sql如下:--------------------------------Table structure for test------------------------------DROP TABLE IF ...

    开发中经常会遇到,分组查询最新数据的问题,比如下面这张表(查询每个地址最新的一条记录):

    e108a78ec8d697ffec29d9db94059384.png

    sql如下:

    --------------------------------Table structure for test------------------------------

    DROP TABLE IF EXISTS`test`;CREATE TABLE`test` (

    `id`int(11) NOT NULLAUTO_INCREMENT,

    `name`varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

    `address`varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

    `create_time`timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY(`id`) USING BTREE

    ) ENGINE= InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT =Dynamic;--------------------------------Records of test------------------------------

    INSERT INTO `test` VALUES (1, ‘张三1‘, ‘北京‘, ‘2019-09-10 11:22:23‘);INSERT INTO `test` VALUES (2, ‘张三2‘, ‘北京‘, ‘2019-09-10 12:22:23‘);INSERT INTO `test` VALUES (3, ‘张三3‘, ‘北京‘, ‘2019-09-05 12:22:23‘);INSERT INTO `test` VALUES (4, ‘张三4‘, ‘北京‘, ‘2019-09-06 12:22:23‘);INSERT INTO `test` VALUES (5, ‘李四1‘, ‘上海‘, ‘2019-09-06 12:22:23‘);INSERT INTO `test` VALUES (6, ‘李四2‘, ‘上海‘, ‘2019-09-07 12:22:23‘);INSERT INTO `test` VALUES (7, ‘李四3‘, ‘上海‘, ‘2019-09-11 12:22:23‘);INSERT INTO `test` VALUES (8, ‘李四4‘, ‘上海‘, ‘2019-09-12 12:22:23‘);INSERT INTO `test` VALUES (9, ‘王二1‘, ‘广州‘, ‘2019-09-03 12:22:23‘);INSERT INTO `test` VALUES (10, ‘王二2‘, ‘广州‘, ‘2019-09-04 12:22:23‘);INSERT INTO `test` VALUES (11, ‘王二3‘, ‘广州‘, ‘2019-09-05 12:22:23‘);

    平常我们会进行按照时间倒叙排列然后进行分组,获取每个地址的最新记录,sql如下:

    SELECT * FROM(SELECT * FROM test ORDER BY create_time DESC) a GROUP BY address

    但是查询结果却不是我们想要的:

    13046086638264d91e0c54872b2a382a.png

    执行时间按倒叙排列结果为:

    f471637e8c218eb0f081679f89e20880.png

    所以真正想要得到的结果是id为2/8/11的记录,上面的查询得到的却是1/5/9,这是为什么呢?

    因为在mysql5.7的时候,子查询的排序已经变为无效了,可能是因为子查询大多数是作为一个结果给主查询使用,所以子查询不需要排序的原因。

    那么我们应该怎么查呢,有两种方式:

    第一种:

    SELECT * FROM(SELECT * FROM test ORDER BY create_time DESC LIMIT 10000) a GROUP BY address

    结果为:

    56c16b0ee1c9792e41415618ec27ac2d.png

    对子查询的排序进行limit限制,此时子查询就不光是排序,所以此时排序会生效,但是限制条数却只能尽可能的设置大些

    第二种:

    SELECT t.* FROM (SELECT address,max(create_time) as create_time FROM test GROUP BY address) a LEFT JOIN test t ON t.address=a.address and t.create_time=a.create_time

    通过MAX函数获取最新的时间和地址(因为需要按照地址分组),然后作为一张表和原来的数据进行联查,

    条件就是地址和时间要和获取的最大时间和地址相等,此时结果为:

    4619793f8ccfca0c555ab8f823f1a7ec.png

    这两种方式的查询效率差不太多,第二种比第一种查询稍微快一点,可能是由于第二种方式的子查询只有两个字段(时间,被分组字段)的缘故吧!

    感兴趣的可以照一张字段多的数据量大的表查询一下比较比较。

    PS:第二种方式中最新的记录,不能同时地点和时间都相同,如果出现这种情况,第二种方式会查出把这两条记录都查出来,而第一条不会。

    所以根据业务和数据情况来选择其中一种方式,毕竟效率差不太多。

    原文:https://www.cnblogs.com/java-spring/p/11498457.html

    展开全文
  • MySQL对数据进行分组查询(GROUP BY)GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组。字段中值相等的为一组。基本的语法格式如下:GROUP BY 属性名 [HAVING 条件表达式] [WITH ROLLUP]属性名:是指...
  • JS对数据进行分组

    千次阅读 2019-12-13 11:02:35
    分组数据类型:包含n多个对象的数据 代码示例: let data = [ { key: 'xxx', name: 'yiyi', age: 12, money: 10 }, { key: 'sss', name: 'iii', age: 13, money: 100 }, { key: 'ddd', name: 'ooo', age: 13...
  • 利用python对数据进行分组统计

    千次阅读 2021-04-30 16:00:28
    SQL经常将聚合函数与GROUP BY进行组合,对数据进行分组统计分析,python在分析数据中也可以实现相同的功能,而且python汇总这个函数名称也是GROUPBY()函数 首先创建数据表 import pandas as pd import numpy ...
  • SQL实现根据字段对表分组,并组进行排序取第数据一、ROW_NUMBER()二、SQL实现 、ROW_NUMBER() ORCLE中,ROW_NUMBER() 为排名函数,负责返回结果编号;over()为分析函数,更加()中内容返回多个结果集; ...
  • 、需要实现分组排序并且取内状态优先级最高的数据有一张这样的数据表, 需求是根据error_type分组然后取status最小的第数据种写法:select t.* from (select e.* from error_record e where e.status >...
  • 使用IBM SPSS快速对数据进行分组

    千次阅读 2021-04-27 15:59:53
    它的数据分析功能是非常全面的,学习起来需要花费不小的精力,小编今天为大家带来的是使用这款软件对数据进行分组操作的方法。 、导入数据 图1:数据导入后 点击“文件”——“导入数据”可以从本地文件夹中...
  • 数据 import pandas as pd ad = pd.read_excel('/data1/xx/ad/量表/ADNIwithScore(1).xls',sheet_name = 'AD...subject进行分组,如果想取每的第个 ad_first = ad.groupby('Subject').first() print(ad_first.
  • MySQL分组内第数据
  • 需求: 1. 数据库表中有两个字段,分别是id_card...4.再根据每个id_card相同的中对应的最小create_date将id_card组进行升序排列 初始数据是这样的: 最终希望的结果如下: 分析步骤: 实现3,只需要通过多..
  • python 对一组list数据进行区间划分,按照大小排序并返回索引值:一、对一组纬度数据进行排序:二、将lat数据按照10为区间进行排序并统计每个区间存在的个数: 最近在海洋数据进行处理时,对数据需要进行一些...
  • Javascript对数据进行分组及根据分组统计 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=...
  • oracle 分组后取每数据数据格式 分组取第条的效果 sql SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER BY y DESC) rn, test ... sql 用Group by分组后,取每的前几条记录 转自:...
  • Mysql分组查询获取每最新数据

    千次阅读 2022-08-20 16:52:35
    Mysql分组查询获取每最新数据
  • sql分组查询每最新数据

    千次阅读 2022-06-01 14:19:17
    sql分组查询最新数据
  • Excel计算一组数据的方差的操作方法

    千次阅读 2021-06-22 22:26:39
    Excel计算一组数据的方差的操作方法1、在Excel里对于计算标准差计算函数,我们只需要如何进行运用这个函数进行操作就行2、笔者这边以计算一些成绩数据的方差作为演示3、首先我们一共有42个数据样本,我们点击需要...
  • Pandas提供了个灵活高效的groupby功能,它使你能以种自然的方式对数据进行切片、切块、摘要等操作。 ✨效果 根据结果可以发现,分组后的结果为DataFrameGroupBy object,是分组后的对象。 用groupby的...
  • 分组分析:是指根据分组字段,将分析对象划分成不同的部分,已进行对比分析各组之间的差异性的种分析方法 常见的统计指标: 计数 求和 平均值 1 函数 01 分组统计函数: groupby(by=[分组列1,分组列2,...])...
  • 先给excel添加开发工具及宏的设置。 ... 在Excel选项的常用页里“在功能区显示开发工具选项卡”打勾; ... 选宏设置项,里面选择“启用所有宏”;...然后点击Visual Basic 进行写代码: 最后点击运行就可以了。
  • 如图,数据库查出来的数据: ...stream里面只有按个属性分组的,但是可以利用string简单变换一下: List<JsonObject> list = goodsList.getList(); Map<String, List<JsonObject>&...
  • 如图,如果我们按 number 分组后再按 is_bak 从大到小排序获取最大的第数据,那么最后结果就是 id 为 1,4,6 这 3 条。 select t.* from ( select distinct(id) as tt,t1.* from a_t as t1 order by is_bak ...
  • 使用mongo的.aggregate方法, 类似个聚合流水线的个过程, 可以理解为文档经过多次管道阶段最后生成的结果, 可以直接看mongo aggregate官方文档 的一张图 将整体文档经过多次管道最后生成想要的文档这个原理 官方...
  • 根据某字段对数据进行分组统计

    千次阅读 2019-01-17 09:30:31
    如何根据某字段对数据进行分组统计? 在项目要求中要求实现此页面功能 在这里要求统计公司20GP,40GP,40HC的柜量和TEU情况, 下面是我实现此功能的页面 啊啊,页面设计不好看,虽然实现的内容与要求的有些许...
  • mysql分组后获取数据

    千次阅读 2018-11-07 12:46:01
    1.数据库表 DROP TABLE IF EXISTS emp;... empno decimal(4,0) NOT NULL, ...2.插入的数据 ...INSERT INTO emp VALUES ('7369', 'SMITH', 'CLERK', '7902', '1980-12-...目的是确定分组字段 sal 排序条件  
  • pandas数据分析之分组聚合

    千次阅读 2022-02-12 09:31:53
    在数据分析过程中,经常会需要根据某列或多列把数据划分为不同的组别,然后再进行数据分析。本文将介绍pandas的数据分组及分组后的应用如数据进行聚合、转换和过滤。
  • mysql分组后,取每数据或最新

    万次阅读 多人点赞 2021-05-06 19:56:41
    环境 MySQL:5.7 Java:1.8 SQL语句的写法: select * from (select distinct(a.id) tid, a.* from template_detail a ...思路:先进行排序,然后再进行分组,获取每的第条。 Q: 为什么要写distinct(a.i
  • 将 lt 按布尔值分为了两组,一组字符串全是小写,一组字符串全是大写 然后,每组内的字符串按长度进行排序 代码 package com.my.app.stream; // 此处为你自己的路径 import java.util.Arrays; import java.util....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 386,765
精华内容 154,706
关键字:

对一组数据进行分组