我有一个像下面第一个表的表(抱歉,如果它没有正确显示,我是StackOverflow的新手并且还没有完全掌握如何在问题中显示表格)。我已经收到了帮助,计算了不重复的ID(我不是指一个明显的计数。一个不同的计数会返回7的结果(a,b,c,d,e,f,g)。我希望它返回4(a,c,d,f)的计数。这些是没有多个类型代码的ID。现在我需要更进一步,以显示类型代码中有多少次计数只有那个单一类型代码的ID。例如,我们希望看到类似下面第二个表的结果。有2个ID的实例具有单个类型代码444(c,f),有一个ID的实例具有单个类型代码111(a)和222(d)。
作为参考,让我获得只有一个类型代码的ID计数的查询是
select count(*) from
(select id from
mytable
group by id
having count(*) =1) t
ID|type code
a|111
b|222
b|333
c|444
d|222
e|111
e|333
e|555
f|444
g|333
g|444
Type Code|Count
111|1
222|1
444|2
答案 0 :(得分:1)
也许这就是你所要求的?
SELECT [type code],
COUNT(*) [count]
FROM mytable
WHERE [ID] IN ( SELECT [ID]
FROM mytable
GROUP BY [ID]
HAVING COUNT([type code]) = 1)
GROUP BY [type code]
答案 1 :(得分:1)
您可以使用嵌套聚合解决此问题:
SELECT type_code, COUNT(*)
FROM
( -- as this looks for a single row you can simply add the type code
SELECT ID, MIN(type_code) as type_code
FROM mytable
GROUP BY ID
HAVING COUNT(*) = 1
) AS dt
GROUP BY type_code