ソースコード
WITH RSLT AS ( 
    -- 最も古い年月のMRRを0とする
    SELECT
        (SELECT MIN(MONTHLY) FROM MRR_DATA) AS YM
        , 0 AS MRR 
    UNION ALL 
    SELECT
        -- 月を1カ月カウントアップする
        DATE (YM, '+1 month')
        -- 問題文の計算式をもとにMRRを計算する
        , MRR + ( 
            ( 
                SELECT
                    NEW_MRR + EXPANSION_MRR - DOWNGRADE_MRR - CHURN_MRR 
                FROM
                    MRR_DATA 
                WHERE
                    MONTHLY = YM
            )
        ) 
    FROM
        RSLT 
    WHERE
       -- 最も新しい年月の翌月までデータを作成する
        YM < DATE ((SELECT MAX(MONTHLY) FROM MRR_DATA), '1 month')
) 
-- 仮想テーブルに作成したデータを年月の昇順で表示する
SELECT
    * 
FROM
    RSLT
ORDER BY
    YM ASC;
提出情報
提出日時2024/09/19 16:33:55
コンテスト第5回 SQLコンテスト
問題MRRの集計
受験者lulei
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量86 MB
メッセージ
テストケース(通過数/総数)
3/3
状態
メモリ使用量
データパターン1
AC
86 MB
データパターン2
AC
86 MB
データパターン3
AC
86 MB