使用 SQL 计算数据

Counting data with SQL

我有一个 table 就像下面的第一个 table (抱歉,如果它没有正确显示,我是 Whosebug 的新手,还没有完全掌握如何在问题中显示 tables)。我已经收到帮助,对不重复的 ID 进行计数(我不是指不同的计数。不同的计数将 return 结果为 7(a、b、c、d、e、f , g)。我希望它 return 计数为 4(a、c、d、f)。这些是没有多个类型代码的 ID)。现在我需要更进一步来显示一个类型代码中有多少次有一个只有那个单一类型代码的 ID。例如,我们希望看到像下面第二个 table 这样的结果。有 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

也许这就是您要的?

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]

您可以使用嵌套聚合解决此问题:

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