DataSet聚合计算

最后更新:2023-10-18 19:49:32 | 状态:未完成
1.分组
如提供一个职员列表的set
[
{id:1, name:'a', dept:'财务部', age:20}
,{id:2, name:'b', dept:'财务部', age:30}
,{id:3, name:'c', dept:'市场部', age:35}
]
根据部门分组
set.group("dept");  //这里可以提供多列
返回结果
[
    {dept:"财务部"
     ,items:[
            {id:1, name:'a', dept:'财务部', age:20}
            ,{id:2, name:'b', dept:'财务部', age:30}
            ]
    },
    {
    dept:"市场部"
     ,items:[
            {id:3, name:'c', dept:'市场部', age:35}
            ]
    }
]
2.聚合
set.avg("age") 返回age平均值
set.sum("age") 返回age合计值
set.max("age") 返回age最大的一行(注意这里返回的是一行,也就是DataRow,而不是属性值35)
set.maxInt("age") 返回age最大值
也可以 
set.agg(boolean empty, Aggregation agg, String key)
enpty:表示是空值是否参与计算,计算平均值时有 
可选的聚合枚举:
 
    MIN			    ("MIN"  		, "最小"),
    MIN_DECIMAL		("MIN_DECIMAL"  , "最小"),
    MIN_DOUBLE		("MIN_DOUBLE"  	, "最小"),
    MIN_FLOAT		("MIN_FLOAT"  	, "最小"),
    MIN_INT			("MIN_INT"  	, "最小"),
    MAX			    ("MAX"			, "最大"),
    MAX_DECIMAL     ("MAX_DECIMAL"  , "最大"),
    MAX_DOUBLE      ("MAX_DOUBLE"   , "最大"),
    MAX_FLOAT	    ("MAX_FLOAT"    , "最大"),
    MAX_INT			("MAX_INT"      , "最大"),
    AVG		        ("AVG"  		, "平均"),
    AVGA		    ("AVGA"  		, "平均(空值参与)"),
    SUM			    ("SUM"  		, "合计"),
    COUNT		    ("COUNT"  		, "数量"),
    COUNTA		    ("COUNT"  		, "数量(空值参与)"),
    STDEV 		    ("STDEV"  		, "抽样标准偏差"),
    STDEVA 		    ("STDEVA" 		, "抽样标准偏差(空值参与)"),
    STDEVP		    ("STDEVP"      	, "总体标准偏差"),
    STDEVPA		    ("STDEVPA"      , "总体标准偏差(空值参与)"),
    VAR		        ("VAR"          , "抽样方差"),
    VARA		    ("VARA"   	    , "抽样方差(空值参与)"),
    VARP		    ("VARP"  		, "总体方差"),
    VARPA		    ("VARPA"  		, "总体方差(空值参与)");
3.分组后聚合
根据姓名分组dept分组并计算组人数,默认情况下计保留总人数,不保留当前组中的人员列表,如果需要保留参考最后的完整参数说明
set.group(Aggregation.COUNT, "dept")
返回
[
    {dept:"财务部",count:2}

    ,{dept:"市场部",count:1}

]

根据姓名分组dept分组并计算每组平均年龄
set.group( "age", Aggregation.COUNT, "dept")
返回
[
    {dept:"财务部",avg:25}

    ,{dept:"市场部",avg:35}

]


完整参数

    /**
     * 分组生聚合
     * @param items   是否保留条目 如果为空则不保留 否则保留会在每个分组中添加items属性用来保存当前分组中的条件
     * @param field   聚合结果保存属性 如果不指定则以 factor_agg命名 如 age_avg
     * @param factor  计算因子属性 取条目中的factor属性的值参与计算
     * @param agg     聚合公式 参考Aggregation枚举
     * @param keys    分组条件 指定属性相同的条目合成一组
     * @param scale   精度(小数位)
     * @param round   舍入方式参考BigDecimal
     *       ROUND_UP        = 0 舍入远离零的舍入模式 在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加 1) 如:2.36 转成 2.4    
     *       ROUND_DOWN      = 1 接近零的舍入模式 在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加1,即截短). 如:2.36 转成 2.3    
     *       ROUND_CEILING   = 2 接近正无穷大的舍入模式 如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同 如果为负,则舍入行为与 ROUND_DOWN 相同 相当于是 ROUND_UP 和 ROUND_DOWN 的合集    
     *       ROUND_FLOOR     = 3 接近负无穷大的舍入模式 如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同 如果为负,则舍入行为与 ROUND_UP 相同 与ROUND_CEILING 正好相反    
     *       ROUND_HALF_UP   = 4 四舍五入    
     *       ROUND_HALF_DOWN = 5 五舍六入    
     *       ROUND_HALF_EVEN = 6 四舍六入 五留双(银行家舍入法)      
     *           如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同(四舍五入)    
     *           如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同(五舍六入)    
     *           如:1.15 转成 1.2,因为5前面的1是奇数;1.25 转成 1.2,因为5前面的2是偶数    
     *       ROUND_UNNECESSARY=7 断言请求的操作具有精确的结果,因此不需要舍入 如果对获得精确结果的操作指定此舍入模式,则抛出 ArithmeticException    
     * @return DataSet
    public DataSet group(String items,String field, String factor, Aggregation agg, int scale, int round, String ... keys)


首页 最近更新 搜索 提交 回复