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

时间:2017-08-18 10:50:18

标签: mysql sql rdbms

假设我有一个列有三种类型的数据,如A,B,C。我想对每种类型的数量进行分组和计数。 例如,如果A在列中为3次,则B为2次,C为1次。 它应显示为:

A    B     C
3    2     1

感谢您的帮助。三江源。

2 个答案:

答案 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