如何分组显示每类数据的计数?

How to Group and display count of each type of data?

假设我有一列包含三种类型的数据,如A、B、C。我想分组并计算每种类型的数量。 例如,如果 A 在列中出现 3 次,则 B 出现 2 次,C 出现 1 次。 它应该显示为:

A    B     C
3    2     1

非常感谢你的帮助。谢谢。

我实际上会建议以下查询:

SELECT
    data, COUNT(*) AS cnt
FROM yourTable
GROUP BY data

这将生成行形式的计数,例如

A 3
B 2
C 1

大多数时候这会满足您的需要。如果你真的需要列,你可以试试这个:

SELECT
    SUM(CASE WHEN data = 'A' THEN 1 ELSE 0 END) AS A,
    SUM(CASE WHEN data = 'B' THEN 1 ELSE 0 END) AS B,
    SUM(CASE WHEN data = 'C' THEN 1 ELSE 0 END) AS C
FROM yourTable

这将生成您预期的文字输出:

A    B    C
3    2    1

如果希望数据在一行中,可以使用条件聚合:

select sum(col = 'a') as A, sum(col = 'b') as b, sum(col = 'c') as c
from t;

你可以尝试更明确的:

select sum(case when col = 'a' then 1 else 0 end) as A,
       sum(case when col = 'b' then 1 else 0 end) as b,
       sum(case when col = 'c' then 1 else 0 end) as c
from t;