2013-04-07 69 views
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。

回答

0

也许沿

SELECT COUNT(DISTINCT i_requirement_id) 
FROM Points 
WHERE i_id IN (1, 22, 579, 5887) AND i_requirement_id is not null 

不同子句允许你行只计算不同的项目

+0

很抱歉,但我试图回避这样的疑问。我使用了这种变体,比如填充。我希望有人告诉我一个功能。 – user1848942 2013-04-07 13:29:57

0

为什么你不喜欢法比奥的解决方案的东西吗?这很好。
第二种方法是使用分析函数。

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

相关问题