ソースコード
/*
新規MRR(NEW_MRR):新規顧客から新たに得られたMRR。
拡大MRR(EXPANSION_MRR):既存顧客がプラン等をアップグレードしたことにより追加で得られたMRR。
減少MRR(DOWNGRADE_MRR):既存顧客がプラン等を下位のものに下げたことにより失われたMRR。
解約MRR(CHURN_MRR):既存顧客が解約したことにより失われたMRR。
MRRデータテーブル(MRR_DATA)に各月について上記4つの項目がデータとして与えられるので、「年月が最も古いレコード」から「年月が最も新しいレコードの翌月」までの期間について、各月のMRRを以下の式によって求め、出力せよ。初期値や日時の扱いはサンプルデータを参考にすること。また、前月のデータが存在しない場合は、すべての項目とMRRはゼロとする。

MRR = 前月のMRR + 前月のNEW_MRR + 前月のEXPANSION_MRR - 前月のDOWNGRADE_MRR - 前月のCHURN_MRR

表示項目

MONTHLY → YM
算出したMRR → MRR
表示順

MONTHLYの昇順
*/

--ひと月前から最終月までのリスト作成
WITH MR2 AS(
SELECT (SELECT DATE(MIN(MONTHLY),'-1 MONTH') FROM MRR_DATA) AS MONTHLY2
FROM MRR_DATA
UNION
SELECT DATE(MONTHLY2,'+1 MONTH')
FROM MR2
WHERE MONTHLY2 < (SELECT MAX(MONTHLY) FROM MRR_DATA)
)

SELECT
DATE(MONTHLY2,'+1 MONTH') AS MONTHLY,
IFNULL(
sum(NEW_MRR + EXPANSION_MRR - DOWNGRADE_MRR -CHURN_MRR)
over(ORDER BY MONTHLY),'0') AS MRR
FROM MRR_DATA
RIGHT JOIN MR2
ON MONTHLY = MONTHLY2
GROUP BY MONTHLY
ORDER BY MONTHLY
提出情報
提出日時2024/11/08 11:58:49
コンテスト第5回 SQLコンテスト
問題MRRの集計
受験者yuta
状態 (詳細)WA
(Wrong Answer: 誤答)
メモリ使用量85 MB
メッセージ
テストケース(通過数/総数)
0/3
状態
メモリ使用量
データパターン1
WA
85 MB
データパターン2
WA
84 MB
データパターン3
WA
85 MB