微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决按汇总分组,导致数字过高

我有以下文件

[ {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 举报,一经查实,本站将立刻删除。