在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`)
答案 0 :(得分:6)
我会按年,月,以及答案本身进行分组。这将导致每月两行:一个计算答案1的外观,另一个计算答案2(它对于其他答案值也是通用的)
SELECT MONTH(`date`), YEAR(`date`), answer, COUNT(*)
FROM results
GROUP BY YEAR(`date`), MONTH(`date`), answer
答案 1 :(得分:5)
尝试使用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`)
答案 2 :(得分:0)
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