返回聚集值的查询可以对持久化类或组件属性的属性进行分组,分组使用group by子句:
select cat.color,sum(cat.weight),count(cat)
from Cat cat
group by cat.color;
类似于SQL的规则:出现在select后的属性,要么出现在聚集函数中,要么出现在group by的属性列表中。
select foo.id,avg(name),max(name)
from Foo foo join foo.names name
group by foo.id;
having子句用于对分组进行过滤:
select cat.color,sum(cat.weight),count(cat)
from Cat cat
group by cat.color
having cat.color in(eg.Color.TABBY,eg.Color.BLACK);
注意:
having子句用于对分组进行过滤,因此having子句只能在有group by子句时才可以使用。没有group by子句,不能使用having。 |