ソースコード
WITH monthly_sales as (select strftime('%Y-%m', sales_date) as YEAR_MONTH, sum(SALES_AMT) as MONTH_AMT from sales where sales_date >= '2022-01-01' and sales_date <= '2023-12-31' and UPDATED_NO is NULL group by YEAR_MONTH order by YEAR_MONTH)
, z_chart as (select YEAR_MONTH, MONTH_AMT, SUM(MONTH_AMT) OVER (ORDER BY YEAR_MONTH rows between 11 PRECEDING AND current row) as YEAR_MOVE_AMT from monthly_sales)
select YEAR_MONTH, MONTH_AMT, sum(MONTH_AMT) OVER (order by YEAR_MONTH) as CUML_AMT, YEAR_MOVE_AMT
from z_chart
where YEAR_MONTH between '2023-01' and '2023-12'
order by YEAR_MONTH

 
-- WITH SALES_YM AS ( 
--     -- 月毎に売上金額を集計
--     SELECT
--       -- 売上日をYYYY-MMの形式に変換
--         STRFTIME('%Y-%m', SALES_DATE) AS YM
--         , SUM(SALES_AMT) AS MON_AMT 
--     FROM
--         SALES 
--     WHERE
--       -- 過去分の集計金額も必要なため1年前からのデータを集計対象とする
--         YM >= '2022-01' 
--       -- 黒伝のみを対象とするため、赤黒伝票番号がNULLの条件を記述
--         AND UPDATED_NO IS NULL 
--     GROUP BY
--         YM
-- ) 
-- , Z_CHART AS ( 
--   -- 該当年月から過去11カ月の売上集計金額を取得
--     SELECT
--         YM AS YEAR_MONTH
--         , MON_AMT AS MONTH_AMT
--         -- SUM OVERで上記で求めた各月の売上集計金額を取得する
--         , SUM(MON_AMT) OVER ( 
--             ORDER BY
--                 -- 年月でソートし11行前までのデータを対象とする
--                 YM ROWS BETWEEN 11 PRECEDING AND CURRENT ROW
--         ) AS YEAR_MOVE_AMT 
--     FROM
--         SALES_YM
-- ) 
-- SELECT
--     YEAR_MONTH
--     , MONTH_AMT
--     -- SUM OVERで該当月までの売上累計金額を取得する
--     , SUM(MONTH_AMT) OVER (ORDER BY YEAR_MONTH) AS CUML_AMT
--     , YEAR_MOVE_AMT 
-- FROM
--     Z_CHART 
-- WHERE
--   -- BETWEENで2023年のデータを絞り込む
--     YEAR_MONTH BETWEEN '2023-01' AND '2023-12' 
-- ORDER BY
--     YEAR_MONTH ASC;
 
提出情報
提出日時2024/04/21 14:18:17
コンテスト第11回 SQLコンテスト
問題Zチャート
受験者daku10
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量86 MB
メッセージ
テストケース(通過数/総数)
2/2
状態
メモリ使用量
データパターン1
AC
86 MB
データパターン2
AC
85 MB