这是一个查询:
SELECT count(*)
FROM Points
WHERE i_id IN (1, 22, 579, 5887) AND i_requirement_id is not null
GROUP BY i_requirement_id
我得到每组的要求。
我需要统计所有群体。
例如来自下一张表
i_id i_requirement_id
1 1022
22 1022
579 1059
5887 1022
我得到3分和1分。但是我只需要获得2,因为在表格中我只有2组i_requrement_id。
答案 0 :(得分:0)
也许是
这一行SELECT COUNT(DISTINCT i_requirement_id)
FROM Points
WHERE i_id IN (1, 22, 579, 5887) AND i_requirement_id is not null
distinct 子句允许您只计算不同的项目
答案 1 :(得分:0)
为什么你不喜欢Fabio的解决方案?这很好。
第二种方法是使用分析函数。
SELECT
i_requirement_id,
count(*) as count_inside_group,
count(i_requirement_id) over() as count_of_groups
FROM Points
WHERE i_id IN (1, 22, 579, 5887) AND i_requirement_id is not null
GROUP BY i_requirement_id