コンテストの制限時間が終了しました。
以降も提出を行うことができますが、順位集計には反映されません。
以降も提出を行うことができますが、順位集計には反映されません。
ソースコード
-- 都道府県毎に就学状況の人数を集計した就学状況データがある。
-- 都道府県、年齢別に就学先が横持ちで人数集計されているが、表示例のように都道府県、就学先で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(ELEMENTARY) AS '小学校'
, SUM(MIDDLE) AS '中学校'
, SUM(HIGH) AS '高校'
, SUM(JUNIOR_CLG) AS '短大'
, SUM(COLLEGE) AS '大学'
, SUM(GRADUATE) 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 IS NOT NULL
ORDER BY
PF_CODE ASC
, KIND_ORDER ASC
提出情報
提出日時 | 2023/01/10 18:54:49 |
コンテスト | 第2回 SQLコンテスト |
問題 | 就学状況の表示変換 |
受験者 | res1235 |
状態 (詳細) | AC (Accepted: 正答) |
メモリ使用量 | 80 MB |
メッセージ
テストケース(通過数/総数)
2/2
状態
メモリ使用量
データパターン1
AC
79 MB
データパターン2
AC
80 MB