SQL; Подсчитывать только значения, указанные в каждом столбце - PullRequest
3 голосов
/ 27 мая 2009

В SQL у меня есть столбец с именем «answer», и значение может быть 1 или 2. Мне нужно сгенерировать SQL-запрос, который подсчитывает количество 1 и 2 для каждого месяца. У меня есть следующий запрос, но он не работает:

SELECT MONTH(`date`), YEAR(`date`),COUNT(`answer`=1) as yes,
COUNT(`answer`=2) as nope,` COUNT(*) as total

FROM results

GROUP BY YEAR(`date`), MONTH(`date`)

Ответы [ 3 ]

6 голосов
/ 27 мая 2009

Я бы сгруппировал по году, месяцу и, кроме того, самому ответу. Это приведет к двум строкам в месяц: одна подсчитывает количество появлений для ответа 1, а другая - для ответа 2 (это также универсально для дополнительных значений ответа)

SELECT MONTH(`date`), YEAR(`date`), answer, COUNT(*)
FROM results
GROUP BY YEAR(`date`), MONTH(`date`), answer
5 голосов
/ 27 мая 2009

Попробуйте трюк SUM-CASE:

SELECT 
    MONTH(`date`), 
    YEAR(`date`),
    SUM(case when `answer` = 1 then 1 else 0 end) as yes,
    SUM(case when `answer` = 2 then 1 else 0 end) as nope,
    COUNT(*) as total
FROM results
GROUP BY YEAR(`date`), MONTH(`date`)
0 голосов
/ 27 мая 2009
SELECT year,
       month,
       answer
       COUNT(answer) AS quantity
FROM results
GROUP BY year, month, quantity
year|month|answer|quantity
2001|    1|     1|     2
2001|    1|     2|     1
2004|    1|     1|     2
2004|    1|     2|     2
SELECT * FROM results;
year|month|answer
2001|    1|     1
2001|    1|     1
2001|    1|     2
2004|    1|     1
2004|    1|     1
2004|    1|     2
2004|    1|     2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...