コンテストの制限時間が終了しました。
以降も提出を行うことができますが、順位集計には反映されません。
以降も提出を行うことができますが、順位集計には反映されません。
ソースコード
-- SELECT
-- PF_CODE '都道府県コード',
-- PF_NAME '都道府県名',
-- 人数が一番多い国のNATION_NAME '1位 国名',
-- 人数が一番多い国のAMT '1位 人数',
-- 人数が二番目に多い国のNATION_NAME '2位 国名',
-- 人数が二番目に多い国のAMT '2位 人数',
-- 人数が三番目に多い国のNATION_NAME '3位 国名',
-- 人数が三番目に多い国のAMT '3位 人数',
-- 各都道府県毎の外国人の合計人数 '合計人数'
-- FROM FOREIGNER F
-- INNER JOIN PREFECTURE P ON F.PF_CODE = P.PF_CODE
-- INNER JOIN NATIONALITY N ON F.NATION_CODE = N.NATION_CODE
-- GROUP BY F.PF_CODE
WITH RANKINGS AS (
SELECT RANK,PF_CODE,NATION_NAME,AMT FROM (
SELECT
RANK() OVER (PARTITION BY PF_CODE ORDER BY AMT DESC, F.NATION_CODE ASC) RANK,
PF_CODE,
NATION_NAME,
AMT
FROM FOREIGNER F
INNER JOIN NATIONALITY N ON F.NATION_CODE = N.NATION_CODE
WHERE F.NATION_CODE != 113
)
WHERE RANK <= 3
)
SELECT
P.PF_CODE '都道府県コード',
P.PF_NAME '都道府県名',
R_1.NATION_NAME '1位 国名',
R_1.AMT '1位 人数',
R_2.NATION_NAME '2位 国名',
R_2.AMT '2位 人数',
R_3.NATION_NAME '3位 国名',
R_3.AMT '3位 人数',
TOTAL.TOTAL_AMT '合計人数'
FROM PREFECTURE P
INNER JOIN (SELECT PF_CODE, NATION_NAME, AMT FROM RANKINGS WHERE RANK=1) R_1 ON P.PF_CODE = R_1.PF_CODE
INNER JOIN (SELECT PF_CODE, NATION_NAME, AMT FROM RANKINGS WHERE RANK=2) R_2 ON P.PF_CODE = R_2.PF_CODE
INNER JOIN (SELECT PF_CODE, NATION_NAME, AMT FROM RANKINGS WHERE RANK=3) R_3 ON P.PF_CODE = R_3.PF_CODE
INNER JOIN (SELECT PF_CODE, SUM(AMT) TOTAL_AMT FROM FOREIGNER WHERE NATION_CODE != 113 GROUP BY PF_CODE) TOTAL ON P.PF_CODE = TOTAL.PF_CODE
ORDER BY
TOTAL.TOTAL_AMT DESC,
P.PF_CODE ASC
提出情報
提出日時 | 2023/08/27 11:27:42 |
コンテスト | 第1回 SQLコンテスト |
問題 | 外国籍分布 |
受験者 | fractal1024 |
状態 (詳細) | AC (Accepted: 正答) |
メモリ使用量 | 82 MB |
メッセージ
テストケース(通過数/総数)
2/2
状態
メモリ使用量
データパターン1
AC
82 MB
データパターン2
AC
77 MB