我有一个包含以下列/值的表:
id group_id state type_id
1 g1 NY t1
2 g1 NY t1
3 g1 PA t1
4 g2 NY t1
5 g3 CA t1
6 g4 CA t2
我想确定给定type_id的一组group_id,状态组合的最大频率。要在直接SQL中执行此操作,我将执行以下操作:
SELECT MAX (COUNT (*)) AS perGroup
FROM table_name
WHERE type_id = t1
GROUP BY group_id, state
这似乎在SQL中运行得很好但是当我尝试将它转换为Grails / GORM中的Criteria Builder时,它总是给我最多0。
我尝试过计算,似乎正常工作。然而;这需要我在db调用之后循环遍历groovy代码,如果可以的话我想避免这样做。
这就是我对计数有用的东西:
Table.createCriteria().list {
eq("type.id",'t1')
projections {
sqlProjection "count(*) as theCount",['theCount'], [INTEGER]
groupProperty "group"
groupProperty "state"
}
}
我如何识别最大值?
例如,鉴于上述场景中的数据,我希望得到以下输出: