问题描述
[ {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 (将#修改为@)