如何在Grails / GORM中找到分组列的最大数量?

时间:2015-03-25 14:03:25

标签: grails gorm

我有一个包含以下列/值的表:

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"
    }
}

我如何识别最大值?

例如,鉴于上述场景中的数据,我希望得到以下输出:

  • t1 = 2
  • t2 = 1

0 个答案:

没有答案