1

SQL で month->count 選択クエリを作成するのが困難です。

基本的に、エントリのリストがあり、すべてのエントリに日付が関連付けられています。私が最終結果にしたいのは、12 行 (各月に 1 行) を含むリストで、各行には月番号 (1 月は 1、2 月は 2 など) と、エントリ数のカウントが含まれます。その月が日付として設定されます。このようなもの:

Month - Count
1     - 12
2     - 0
3     - 7
4     - 0
5     - 9
6     - 0

カウントが 0 より大きい月を含む結果を取得できますが、その月にエントリが含まれていない場合、行は作成されません。するだけでこの結果が得られます

SELECT Month(goalDate) as monthNumber, count(*) as monthCount 
FROM goalsList 
WHERE Year(goalDate) = 2012 
GROUP BY Month(goalDate) 
ORDER BY monthNumber

助けてくれてありがとう!

4

1 に答える 1

2

このようなことを試してみてください。

SELECT a.monthNo, COUNT(b.goalDate)
FROM (
        SELECT 1 monthNo UNION SELECT 2 monthNo
          UNION
        SELECT 3  monthNo UNION SELECT 4 monthNo
          UNION
        SELECT 5  monthNo UNION SELECT 6 monthNo
          UNION
        SELECT 7  monthNo UNION SELECT 8 monthNo
          UNION
        SELECT 9  monthNo UNION SELECT 10 monthNo
          UNION
        SELECT 11  monthNo UNION SELECT 12 monthNo
      )  a LEFT JOIN goalsList b
            ON a.monthNo = CAST(month(b.goalDate) as SIGNED)
GROUP BY a.monthNo
ORDER BY a.monthNo;

アイデアは、一時テーブルに月番号のレコードのリストを作成し、それをテーブルに対して結合することgoalsListでした。(OPに月番号のテーブルがないことを前提としています

SQLFiddle デモ

于 2012-09-26T03:30:54.500 に答える