ソースコード
--時系列データの取り扱いまた頑張ってみる
WITH master_table  AS
(
 SELECT
  --まずは最小の年月日を取得
  (SELECT MIN(MONTHLY) FROM MRR_DATA) AS YM,
  --MRRの初期値は0に設定
  0 AS MRR
 --再帰的な計算をする
 UNION ALL
 SELECT
  --UNIONする日付はYM + 1
  DATE(YM,'+1 month'),
  --MRRの計算は与えられた計算式でやるがMONLTHY = YMの値を取る(これで先月分の値が取れる)
  MRR + (SELECT NEW_MRR + EXPANSION_MRR - DOWNGRADE_MRR - CHURN_MRR FROM MRR_DATA WHERE MONTHLY = YM)
 FROM
  master_table
 WHERE
  --ここのWHERE句でどこまでループするかを決める
  YM < DATE((SELECT MAX(MONTHLY) FROM MRR_DATA),'1 month')
)

SELECT
 *
FROM
 master_table
ORDER BY
 YM
提出情報
提出日時2024/02/19 16:16:33
コンテスト第5回 SQLコンテスト
問題MRRの集計
受験者romi0416
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量84 MB
メッセージ
テストケース(通過数/総数)
3/3
状態
メモリ使用量
データパターン1
AC
84 MB
データパターン2
AC
84 MB
データパターン3
AC
84 MB