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

1か月あたりのすべての日のリストを作成し、値を毎日均等に分割します

    demo:db <> fiddle

    SELECT
        gs::date,
        costs /  COUNT(*) OVER (PARTITION BY entry_date)    -- 3
    FROM costs,
        generate_series(                                    -- 2
            entry_date,
            entry_date + interval '1 month - 1 day',        -- 1
            interval '1 day'
        ) gs
    
    1. 月の最終日の計算(月の最初に月を追加して翌月の最初の日を取得し、そこから1日を減算します)
    2. 月の初めから終わりまでの一連の日付を生成します
    3. 生成されたシリーズとデータを結合すると、コスト値がすでに複製されています。コスト値は、各月の日数で割るだけで済みます。これがCOUNT()です。 ウィンドウ関数はここで行います



    1. ODBC接続を介して取得された絵文字データは疑問符として表示されます

    2. リモートデータベースをローカルホストにインポートする

    3. MySQLまたはMariaDBデータベースに接続する方法

    4. PL/pgSQL関数のオプションの引数