3

SQL には「answer」という列があり、値は 1 または 2 のいずれかです。各月の 1 と 2 の数をカウントする SQL クエリを生成する必要があります。次のクエリがありますが、機能しません。

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`)
4

3 に答える 3

6

年、月、さらに答え自体でグループ化します。これにより、月に2行になります。1つは回答1の出現をカウントし、もう1つは回答2の出現をカウントします(追加の回答値の一般的なものでもあります)

SELECT MONTH(`date`), YEAR(`date`), answer, COUNT(*)
FROM results
GROUP BY YEAR(`date`), MONTH(`date`), answer
于 2009-05-27T11:53:45.727 に答える
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`)
于 2009-05-27T11:43:38.993 に答える
0
SELECT year,
       month,
       answer
       COUNT(answer) AS quantity
FROM results
GROUP BY year, month, quantity
年|月|回答|数量
2001 | 1 | 1 | 2
2001 | 1 | 2 | 1
2004 | 1 | 1 | 2
2004 | 1 | 2 | 2
SELECT * FROM results;
年|月|回答
2001 | 1 | 1
2001 | 1 | 1
2001 | 1 | 2
2004 | 1 | 1
2004 | 1 | 1
2004 | 1 | 2
2004 | 1 | 2
于 2009-05-27T11:58:41.083 に答える