sql >> データベース >  >> RDS >> PostgreSQL

月ごとにグループ化し、レコードが見つからない場合は0を返します

    group by ご覧のとおり、句はデータがないエントリを作成しません。あなたにできることはleft joinです この結果全体と、必要なすべてのエントリを含む別の結果セット(たとえば、generate_series

    SELECT    generate_series AS month_number, cnt
    FROM      GENERATE_SERIES(1,12) g
    LEFT JOIN (SELECT     COUNT(s.id) AS cnt, 
                          DATE_PART('month', s.viewed_at) AS month_number
               FROM       statistics_maps_view s
               INNER JOIN maps m ON s.maps_id = m.id 
               WHERE      m.users_id = $users_id 
               GROUP BY   month_number) s ON g.generate_series = s.month_number
    ORDER BY  1 ASC
    



    1. SQLあいまいマッチング

    2. OraOLEDB.Oracleプロバイダーがローカルマシンに登録されていません

    3. Oracleで4バイトのUTF8文字を検出する方法

    4. 二重のメールを送信するPHPMailer