MRRの集計
配点 : 40点難易度 : 4
制限実行時間 : 1000ms制限メモリ使用量 : 128 MB
SQLiteの注意点

TOPSIC SQLでは、SQLの実行環境にSQLiteを使用しています。SQLite以外のRDBMSの文法を使用することはできません。
問題を解く際に注意すべきSQLiteの制約について、以下に記載してありますのでご確認下さい。

  1. NUMERIC、INTEGER、REALは、自身のクラスへの変換が推奨されていますが、変換できなかった場合でも、そのまま格納されます。
  2. 新しくデータを追加した場合、既に格納されているデータの中で ROWID の値が最大のものを探し、それに1を加えた値が新しく追加されるデータの ROWID の値として保存されます。
  3. 外部結合は、左外部結合を行う LEFT OUTER JOIN 句のみ使用できます。
    ※2022年12月以降、LEFT / RIGHT / FULL OUTER JOIN が使用可能となりました。
  4. 指定した日付と時刻のタイムゾーンはUTCとして扱われます。
  5. 日付関数や文字列関数については、SQLiteで固有の関数があります。
  6. テーブル項目の論理名が「◯◯日」となっている場合は、日付項目の時分秒は設定されていません。論理名が「◯◯日時」となっている場合は、日付項目の時分秒まで設定されています。
    • 「受注日」の場合は「2021-01-01」
    • 「受注日時」の場合は「2021-01-01 15:15:15」

その他のSQLiteの制約については、SQLiteの公式ドキュメントをご確認ください。
また、ER図の読み方やSQLiteの関数および構文などについては、「受験ルール・用語」をご確認ください。

問題

SaaSビジネスなどでよく用いられる経営上の指標の1つとしてMRR(月次経常収益)が挙げられる。MRRはサブスクリプションなどにより「毎月決まって発生する収益」を指し、その推移からビジネスの成長度合いを確認することができる。

MRRの増減は、以下の例のようにいくつかの項目に細分化することができ、個々の指標についてより詳細な分析を行うことができる。

  • 新規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

表示順

  1. MONTHLYの昇順

表示フォーマット

※あくまでフォーマットを示すもので、正解例ではありません。行数も正解とは異なります。

YM MRR
2022-01-01 0
2022-02-01 10000
2022-03-01 35000
2022-04-01 55000
2022-05-01 85000

ER図 (半角:物理名、全角:論理名)


テーブル定義

テーブル名: MRR_DATA

主キー 列名 データ型 必須 デフォルト値
✔︎ MONTHLY VARCHAR ✔︎ NULL
NEW_MRR INTEGER ✔︎ NULL
EXPANSION_MRR INTEGER ✔︎ NULL
DOWNGRADE_MRR INTEGER ✔︎ NULL
CHURN_MRR INTEGER ✔︎ NULL

サンプルデータ

テーブル名: MRR_DATA

MONTHLY NEW_MRR EXPANSION_MRR DOWNGRADE_MRR CHURN_MRR
2022-01-01 10000 0 0 0
2022-02-01 20000 5000 0 0
2022-03-01 20000 0 0 0
2022-04-01 30000 5000 0 5000
2022-05-01 30000 0 0 10000
2022-06-01 20000 0 5000 20000
2022-07-01 50000 0 0 5000
2022-08-01 30000 10000 0 5000
2022-09-01 40000 0 0 20000
2022-10-01 60000 0 0 10000
2022-11-01 50000 20000 10000 10000
2022-12-01 40000 30000 5000 20000
Sorry, Japanese Only.