假设我有一个列有三种类型的数据,如A,B,C。我想对每种类型的数量进行分组和计数。 例如,如果A在列中为3次,则B为2次,C为1次。 它应显示为:
A B C
3 2 1
感谢您的帮助。三江源。
答案 0 :(得分: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;
答案 1 :(得分:0)
我实际上会建议以下查询:
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