SQL

时间:2016-06-23 13:23:15

标签: sql sql-server

我不能雄辩地解释我的最终问题,如果你能更好地描述SQL解决方案,请随意编辑这个标题和这个问题的内容。

我在包含“Item”,“Category”列的表中有数据,并且我有以下查询计算每个项目中不同类别的数量。

SELECT 
  [ItemID], COUNT(DISTINCT [CategoryText] ) AS 'number of categories' 
FROM [SampleTable]
GROUP BY
  ItemID

这给了我输出

`ItemID', 'number of categories'
100 1
101 3
102 1

我现在想要做的是按项目数量分组项目数量,目的是确定“大多数项目只有一个类别吗?”

对于上面的例子,我希望结果是

'Number of categories', 'Number of items'
1, 2
3, 1

我确信有一个简单的查询可以解决这个问题,但我会绕圈而不取得进展。

1 个答案:

答案 0 :(得分:3)

按类别数量汇总结果。

select [number of categories], count(*) [number of items]
from (SELECT [ItemID], COUNT(DISTINCT [CategoryText]) AS 'number of categories' 
      FROM [SampleTable]
      GROUP BY ItemID) t
group by [number of categories]