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

1時間あたりのカウントを取得し、ない場合はゼロを取得するクエリ

    時間を生成する必要があります。 generate_series()を使用する1つのメソッドを次に示します。 :

    select '00:00'::time + g.h * interval '1 hour',
           count(order_id) as orders
    from generate_series(0, 23, 1) g(h) left join
         order_table ot
         on extract(hour from create_date) = g.h and
            date_trunc('day', create_date) = '2013-05-09'
    group by g.h
    order by g.h;
    

    または代わりに:

    select g.dte, count(order_id) as orders
    from generate_series('2013-05-09'::timestamp, '2013-05-09 23:00:00'::timestamp, interval '1 hour') g(dte) left join
         order_table ot
         on g.dte = date_trunc('hour', create_date) 
    group by g.dte
    order by g.dte;
    


    1. (null)値をPIVOTの0出力に置き換える方法

    2. トリガーに存在しない場合

    3. .MySQLNonTransientConnectionException:データベースサーバーへの接続を作成できませんでした

    4. UTCでDATETIMEとTIMESTAMPを適切に処理するためのJDBC-mysqlドライバー設定とは何ですか?