ソースコード
WITH pre AS(
SELECT
    PF_CODE,
    SUM(TOTAL_VALUE) FILTER(WHERE KIND_CODE = '100') AS 販売額,
    SUM(TOTAL_VALUE) FILTER(WHERE KIND_CODE = '150') AS 店舗数
FROM
    CONVENIENCE
WHERE
    SURVEY_YEAR = 2019
GROUP BY
    PF_CODE
),
pre2 AS(
SELECT
    PF_CODE,
    販売額,
    店舗数,
    RANK() OVER(ORDER BY 販売額 DESC, 店舗数, PF_CODE) AS ランク
FROM
    pre
),
pre3 AS(
SELECT
    CASE 
        WHEN ランク = 1 THEN 1
        WHEN ランク = 2 THEN 1
        WHEN ランク = 3 THEN 1
        WHEN ランク = 4 THEN 2
        WHEN ランク = 5 THEN 2
        WHEN ランク = 6 THEN 2
        WHEN ランク = 7 THEN 3
        WHEN ランク = 8 THEN 3
        WHEN ランク = 9 THEN 3
        WHEN ランク = 10 THEN 4
        WHEN ランク = 11 THEN 4
        WHEN ランク = 12 THEN 4
        WHEN ランク = 13 THEN 5
        WHEN ランク = 14 THEN 5
        WHEN ランク = 15 THEN 5
        WHEN ランク = 16 THEN 6
        WHEN ランク = 17 THEN 6
        WHEN ランク = 18 THEN 6
        WHEN ランク = 19 THEN 7
        WHEN ランク = 20 THEN 7
        WHEN ランク = 21 THEN 7
        WHEN ランク = 22 THEN 8
        WHEN ランク = 23 THEN 8
        WHEN ランク = 24 THEN 8
        WHEN ランク = 25 THEN 9
        WHEN ランク = 26 THEN 9
        WHEN ランク = 27 THEN 9
        WHEN ランク = 28 THEN 10
        WHEN ランク = 29 THEN 10
        WHEN ランク = 30 THEN 10
        END AS NO,
    SUM(販売額) AS TTL_SAL,
    SUM(店舗数) AS 店舗数
FROM
    pre2
GROUP BY
    NO
),
pre4 AS(
SELECT
    NO,
    TTL_SAL,
    (SELECT SUM(TTL_SAL) FROM pre3) AS 合計額,
    ROUND(
        CAST(TTL_SAL AS real) / CAST( (SELECT SUM(TTL_SAL) FROM pre3) AS real) * 100
    ,1) AS PER_SAL,
    SUM(TTL_SAL) OVER(ORDER BY NO) AS 累計額,
    TRUNC(SUM(TTL_SAL) / SUM(店舗数)) AS AVG_SAL
FROM
    pre3
GROUP BY
    NO
)
SELECT
    NO,
    TTL_SAL,
    PER_SAL,
    ROUND(
        CAST(累計額 AS real) / CAST(合計額 AS real)  * 100
    ,1) AS CUM_SAL,
    AVG_SAL
FROM
    pre4
GROUP BY
    NO
ORDER BY
    NO
提出情報
提出日時2024/02/10 20:40:38
コンテスト第9回 SQLコンテスト
問題販売額分析
受験者north_mb_p
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量85 MB
メッセージ
テストケース(通過数/総数)
3/3
状態
メモリ使用量
データパターン1
AC
84 MB
データパターン2
AC
85 MB
データパターン3
AC
85 MB