ソースコード
-- 都道府県毎に就学状況の人数を集計した就学状況データがある。
-- 都道府県、年齢別に就学先が横持ちで人数集計されているが、表示例のように都道府県、就学先で1レコードとなるように集計して縦持ちのデータに変換しなさい。
-- また、集計対象とするのは、調査年が2020年のデータのみとし、KINDに表示する文言は、就学先の論理名とする。ただし、集計値がNULLのデータは表示対象としない。

-- 表示項目は以下とする。(エイリアスを使用し→の項目名とする)

-- SURVEY_YEAR → SV_YEAR
-- PF_NAME → PREFECTURE
-- 集計した就学先の種類 → KIND
-- 就学先ごとに集計した人数 → AMT
-- 表示順

-- 都道府県コードの昇順
-- 就学状況データの就学先を左から並べた順番(小学校→・・→大学院)

WITH
ENROLLMENT_STATUS_2020 AS (
    SELECT
        SURVEY_YEAR AS SV_YEAR
        , PF_CODE
        , PF_NAME AS PREFECTURE
        , SUM(COALESCE(ELEMENTARY, 0)) AS '小学校'
        , SUM(COALESCE(MIDDLE, 0)) AS '中学校'
        , SUM(COALESCE(HIGH, 0)) AS '高校'
        , SUM(COALESCE(JUNIOR_CLG, 0)) AS '短大'
        , SUM(COALESCE(COLLEGE, 0)) AS '大学'
        , SUM(COALESCE(GRADUATE, 0)) AS '大学院'
    FROM
        ENROLLMENT_STATUS
    LEFT JOIN
        PREFECTURE
    USING(PF_CODE)
    WHERE
        SURVEY_YEAR = 2020
    GROUP BY
        SURVEY_YEAR
        , PF_CODE
        , PF_NAME
)
, union_all AS (
    SELECT
        SV_YEAR
        , PF_CODE
        , PREFECTURE
        , 1 AS KIND_ORDER
        , '小学校' AS 'KIND'
        , "小学校" AS 'AMT'
    FROM
        ENROLLMENT_STATUS_2020
    UNION
    SELECT
        SV_YEAR
        , PF_CODE
        , PREFECTURE
        , 2 AS KIND_ORDER
        , '中学校' AS 'KIND'
        , "中学校" AS 'AMT'
    FROM
        ENROLLMENT_STATUS_2020
    UNION
    SELECT
        SV_YEAR
        , PF_CODE
        , PREFECTURE
        , 3 AS KIND_ORDER
        , '高校' AS 'KIND'
        , "高校" AS 'AMT'
    FROM
        ENROLLMENT_STATUS_2020
    UNION
    SELECT
        SV_YEAR
        , PF_CODE
        , PREFECTURE
        , 4 AS KIND_ORDER
        , '短大' AS 'KIND'
        , "短大" AS 'AMT'
    FROM
        ENROLLMENT_STATUS_2020
    UNION
    SELECT
        SV_YEAR
        , PF_CODE
        , PREFECTURE
        , 5 AS KIND_ORDER
        , '大学' AS 'KIND'
        , "大学" AS 'AMT'
    FROM
        ENROLLMENT_STATUS_2020
    UNION
    SELECT
        SV_YEAR
        , PF_CODE
        , PREFECTURE
        , 6 AS KIND_ORDER
        , '大学院' AS 'KIND'
        , "大学院" AS 'AMT'
    FROM
        ENROLLMENT_STATUS_2020
)
SELECT
    SV_YEAR
    , PREFECTURE
    , KIND
    , AMT
FROM
    union_all
WHERE
    AMT > 0
ORDER BY
    PF_CODE ASC
    , KIND_ORDER ASC
提出情報
提出日時2023/01/10 18:47:44
コンテスト第2回 SQLコンテスト
問題就学状況の表示変換
受験者res1235
状態 (詳細)WA
(Wrong Answer: 誤答)
メモリ使用量79 MB
メッセージ
テストケース(通過数/総数)
1/2
状態
メモリ使用量
データパターン1
WA
79 MB
データパターン2
AC
76 MB