如何返回特定值的多重计数

时间:2011-04-05 14:15:05

标签: mysql count sum

我有一张这样的表:

id|category

其中category是0到3之间的整数。如何计算每个类别中的行数。是否可以在单个查询中使用?

F.X。如果我有这些行:

a|3
b|1
d|1
f|0
g|2

结果应该是:

(1,2,1,1)

即。 1个类别= 0,2个类别= 1等。

1 个答案:

答案 0 :(得分:7)

这将为每个类别提供一行。

SELECT category, COUNT(*) as catcount
    FROM YourTable
    GROUP BY category

以您指定的确切格式(1行,4列)获取输出:

SELECT SUM(CASE WHEN category = 0 THEN 1 ELSE 0 END) AS cat0count,
       SUM(CASE WHEN category = 1 THEN 1 ELSE 0 END) AS cat1count,
       SUM(CASE WHEN category = 2 THEN 1 ELSE 0 END) AS cat2count,
       SUM(CASE WHEN category = 3 THEN 1 ELSE 0 END) AS cat3count
    FROM YourTable