Как вернуть несколько значений определенных значений - PullRequest
5 голосов
/ 05 апреля 2011

У меня есть такая таблица:

id|category

где категория - это целое число от 0 до 3. Как подсчитать, сколько строк в каждой категории. Возможно ли это в одном запросе?

F.x. если у меня есть эти строки:

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

результат должен быть:

(1,2,1,1)

есть. 1 в категории = 0, 2 в категории = 1 и т. Д.

1 Ответ

7 голосов
/ 05 апреля 2011

Это даст вам строку для каждой категории.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...