2

我想计算不活跃的人的百分比除以活跃的人的百分比。

我将执行类似以下 HQL 查询的操作,但它不起作用:

(select count(x) from People as x where x.active=false) / 
(select count(x) from People as x where x.active=true)

我怎样才能做到这一点?

4

4 回答 4

1

您可以使用 group by 子句来表达这一点。以下是您在 Grails 中的操作方法:

def countByAction = People.
    executeQuery("select active, count(*) from People group by active")*.
    toList().
    collectEntries{it}
println (countByAction[true])
println (countByAction[false])
于 2013-08-12T20:52:14.297 回答
0

由于您使用的是 HQL 表达式,我假设您使用的是 Hibernate。在这种情况下,我建议您使用@Formula注释。您可以在此处找到更多信息:

于 2013-08-13T07:48:21.573 回答
0

我使用countBy*动态方法,该方法使用域类的属性来查询匹配记录数的计数。见http://grails.org/doc/latest/ref/Domain%20Classes/countBy.html

于 2013-08-13T16:24:42.183 回答
0

像这样的东西应该工作

String hql = "select count(x)/(select count(x) from People as x where x.active=true) 
                 from People as x where x.active=false";

Long result = (Long) em.createQuery(hql).getSingleResult();

注意:以上未经测试

于 2013-08-13T15:04:56.900 回答