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

Postgres generate_series

    WITHと書くことができます。 クエリ このために:

    WITH month_amount AS
    (
        SELECT
            sum(amount) AS amount,
            date_trunc('month', date) AS month
        FROM Amount
        WHERE user_id = 55 -- AND ...
        GROUP BY month
    )
    SELECT month, amount
    FROM
        (SELECT generate_series(min(month), max(month), '1 month') AS month
        FROM month_amount) x
    LEFT JOIN month_amount
    USING (month)
    ORDER BY month;
    

    結果の例:

    SELECT * FROM amount WHERE user_id = 55;
     amount_id | user_id | amount |    date    
    -----------+---------+--------+------------
             3 |      55 |      7 | 2011-03-16
             4 |      55 |      5 | 2011-03-22
             5 |      55 |      2 | 2011-05-07
             6 |      55 |     18 | 2011-05-27
             7 |      55 |      4 | 2011-06-14
    (5 rows)
    
    WITH month_amount ..
             month          | amount 
    ------------------------+--------
     2011-03-01 00:00:00+01 |     12
     2011-04-01 00:00:00+02 |       
     2011-05-01 00:00:00+02 |     20
     2011-06-01 00:00:00+02 |      4
    (4 rows)
    


    1. パスワードを忘れた場合にPostgreSQLデータベースに侵入する方法はありますか?

    2. pg_trgmのデフォルト制限を設定します

    3. 匿名/ゲストユーザーに関する情報をデータベースに保存する方法はありますか?

    4. MySQL-休憩を除いて、2つの日時間の正味時間差を計算しますか?