在子选择旁边是否有另一种方法可以根据整个查询的结果而不是每个组获得聚合函数的结果?
示例:
SELECT count(*)
FROM table
GROUP BY objId;
返回每个objId
的条目数。
获取不同objId
的数量的一种方法是嵌套查询:
SELECT count(*)
FROM
(SELECT objId
FROM table
GROUP BY objId);
但是有没有另一种方法可以在没有子查询的情况下指定count
函数的工作范围?
答案 0 :(得分:1)
使用count(distinct)
:
select count(distinct objid)
from table;
注意:如果objid
可能是NULL
,则存在细微差别。如果是这样,那么正确的替换是:
select (count(distinct objid) +
max(case when objid is null then 1 else 0 end)
)
from table;