ソースコード
with RECURSIVE tmp1 as (
    select
        *
    from
        MRR_DATA m1
    union
    select
        date(max(MONTHLY), '+1 month') as MONTHLY,
        null,
        null,
        null,
        null
    from
        MRR_DATA m2
),
tmp2 as (
    select
        row_number() over (order by t1.MONTHLY) as seq,
        t1.MONTHLY as YM,
        ifnull(t1_2.NEW_MRR + t1_2.EXPANSION_MRR - t1_2.DOWNGRADE_MRR - t1_2.CHURN_MRR, 0) as MRR
    from
        tmp1 t1
        left outer join
            tmp1 t1_2
            on t1.MONTHLY = date(t1_2.MONTHLY, '+1 month')

),
fib(seq, YM, MRR) as (
    select
        tmp2.seq,
        tmp2.YM,
        tmp2.MRR
    from
        tmp2
    where
        tmp2.seq = 1
    union all
    select
        f1.seq + 1,
        f2.YM,
        f1.MRR + f2.MRR
    from
        fib f1
    join
        tmp2 f2 on f2.seq = f1.seq + 1
    where
        f2.seq IS NOT NULL
)
select YM, MRR from fib order by YM;
提出情報
提出日時2024/12/13 18:17:05
コンテスト第5回 SQLコンテスト
問題MRRの集計
受験者tofu
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量85 MB
メッセージ
テストケース(通過数/総数)
3/3
状態
メモリ使用量
データパターン1
AC
84 MB
データパターン2
AC
84 MB
データパターン3
AC
85 MB