我想计算不活跃人数的百分比除以活跃人数的百分比。
我将执行类似以下HQL查询的操作,但它不起作用:
(select count(x) from People as x where x.active=false) /
(select count(x) from People as x where x.active=true)
我该怎么做?
答案 0 :(得分: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])
答案 1 :(得分:1)
这样的事情应该有效
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();
注意:以上是未经测试的
答案 2 :(得分:0)
由于您使用的是HQL表达式,我假设您正在使用Hibernate。在这种情况下,我建议您使用@Formula
注释。您可以在此处找到更多信息:
答案 3 :(得分:0)
我使用 countBy * 动态方法,该方法使用域类的属性来查询匹配记录数的计数。见http://grails.org/doc/latest/ref/Domain%20Classes/countBy.html