按汇总分组,导致数字过高

问题描述

我有以下文件

[ {CatId: 1,"type":"group","minValue": 100,"currentValue": 80,"groupId":1},{CatId:1,"type":"member","minValue": 50,"currentValue": 50,"memberId":1} ]

我想要的输出很复杂,但是我想更简单地开始。按catId分组的理想输出数据

CatId: 1,groupsTotalMinValue: 100,groupsTotalCurrentVal: 80,groupsTotal: 1,membersTotal: 1,totalBalancedGroups:0,totalBalancedClients:1

平衡结果适用于minValue和currentValue相同的组/成员。

无论如何,为了使事情变得更简单,我现在只想获取groupsTotalMinValue,groupsTotalCurrentVal,groupsTotal和membersTotal,我尝试了以下联接,但数量很高:

Query query =  QueryBuilder.select(
            SelectResult.expression(Function.sum(Expression.property("minValue").from("groups"))).as("groupsTotalMinValue"),SelectResult.expression(Function.sum(Expression.property("currentValue").from("groups"))).as("groupsTotalCurrentValue"),SelectResult.expression(Function.count(Expression.property("groupId").from("groups"))).as("groupsTotal"),SelectResult.expression(Function.count(Expression.property("memberId").from("members"))).as("membersTotal"),SelectResult.expression(Expression.property("CatId").from("groups")).as("CatId"))
            .from(DataSource.database(database).as("groups"))
            .join(Join.join(DataSource.database(database).as("members")).on(Expression.property("CatId").from("groups").equalTo(Expression.property("CatId").from("members"))))
            .where(Expression.property("type").from("groups").equalTo(Expression.string("group"))
             .and(Expression.property("type").from("members").equalTo(Expression.string("member")))
             .and(Expression.property("CatId").from("members").equalTo(Expression.property("CatId").from("groups")))
             .and(Expression.property("districtId").from("members").equalTo(Expression.intValue(districtId))))
            .groupBy(Expression.property("CatId").from("groups"));

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)