在查询结果中是否有计数组的功能?

时间:2013-04-07 13:12:15

标签: plsql

这是一个查询:

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。

2 个答案:

答案 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

fiddle