ソースコード
WITH mart AS(
  SELECT
    FOREIGNER.PF_CODE,
    PF_NAME,
    FOREIGNER.NATION_CODE,
    NATION_NAME,
    AMT,
    ROW_NUMBER() OVER (PARTITION BY FOREIGNER.PF_CODE ORDER BY AMT DESC, FOREIGNER.NATION_CODE) AS ranking
  FROM
    FOREIGNER
  INNER JOIN
    NATIONALITY
  ON
    FOREIGNER.NATION_CODE = NATIONALITY.NATION_CODE
  INNER JOIN
    PREFECTURE
  ON
    FOREIGNER.PF_CODE = PREFECTURE.PF_CODE
  WHERE
    FOREIGNER.NATION_CODE <> 113
  ORDER BY
    FOREIGNER.PF_CODE,
    AMT DESC,
    FOREIGNER.NATION_CODE
    
)

SELECT
PF_CODE AS 都道府県コード,
PF_NAME AS 都道府県名,
MAX(CASE WHEN ranking = 1 THEN NATION_NAME ELSE NULL END) AS "1位 国名",
MAX(CASE WHEN ranking = 1 THEN AMT ELSE 0 END) AS "1位 人数",
MAX(CASE WHEN ranking = 2 THEN NATION_NAME ELSE NULL END) AS "2位 国名",
MAX(CASE WHEN ranking = 2 THEN AMT ELSE 0 END) AS "2位 人数",
MAX(CASE WHEN ranking = 3 THEN NATION_NAME ELSE NULL END) AS "3位 国名",
MAX(CASE WHEN ranking = 3 THEN AMT ELSE 0 END) AS "3位 人数",
SUM(AMT) AS "合計人数"
FROM
  mart
GROUP BY
  都道府県コード,
  都道府県名
ORDER BY
  合計人数 DESC,
  都道府県コード
提出情報
提出日時2022/07/20 19:15:07
コンテスト第1回 SQLコンテスト
問題外国籍分布
受験者yn
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量105 MB
メッセージ
テストケース(通過数/総数)
2/2
状態
メモリ使用量
データパターン1
AC
94 MB
データパターン2
AC
105 MB