0

这是一个查询:

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。

4

2 回答 2

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子句允许您只计算不同的项目

于 2013-04-07T13:24:42.257 回答
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

小提琴

于 2013-04-07T15:00:20.967 回答