【发布时间】:2011-07-30 00:37:38
【问题描述】:
我有一张这样的桌子:
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 等等。
【问题讨论】:
我有一张这样的桌子:
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 等等。
【问题讨论】:
这将为每个类别提供一行。
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
【讨论】: