ソースコード
SELECT
    PFE.PF_CODE AS '都道府県コード'
    , PFE.PF_NAME AS '都道府県名'
    , MAX(CASE WHEN F_DATA.RANK_NUM = 1 THEN NAT.NATION_NAME END) AS '1位 国名'
    , MAX(CASE WHEN F_DATA.RANK_NUM = 1 THEN F_DATA.AMT END) AS '1位 人数'
    , MAX(CASE WHEN F_DATA.RANK_NUM = 2 THEN NAT.NATION_NAME END) AS '2位 国名'
    , MAX(CASE WHEN F_DATA.RANK_NUM = 2 THEN F_DATA.AMT END) AS '2位 人数'
    , MAX(CASE WHEN F_DATA.RANK_NUM = 3 THEN NAT.NATION_NAME END) AS '3位 国名'
    , MAX(CASE WHEN F_DATA.RANK_NUM = 3 THEN F_DATA.AMT END) AS '3位 人数'
    , FOR.SUM_AMT AS '合計人数'
FROM
    (
        SELECT
            PF_CODE
            , SUM(AMT) SUM_AMT
        FROM
            FOREIGNER
        WHERE
            NATION_CODE != '113'
        GROUP BY
            PF_CODE
    ) FOR
    INNER JOIN (    
        SELECT
            AMT
            , NATION_CODE
            , PF_CODE
            , RANK() OVER(
                PARTITION BY PF_CODE
                ORDER BY AMT DESC ,NATION_CODE
            ) RANK_NUM
        FROM
            FOREIGNER
        WHERE
            NATION_CODE != '113'
    ) AS F_DATA
        ON FOR.PF_CODE = F_DATA.PF_CODE
        AND F_DATA.RANK_NUM <= 3
    INNER JOIN PREFECTURE AS PFE
        ON F_DATA.PF_CODE = PFE.PF_CODE
    INNER JOIN NATIONALITY NAT
        ON F_DATA.NATION_CODE = NAT.NATION_CODE
GROUP BY
    PFE.PF_CODE
ORDER BY
    合計人数 DESC
    , 都道府県コード ASC
提出情報
提出日時2022/07/20 19:08:34
コンテスト第1回 SQLコンテスト
問題外国籍分布
受験者peter-yusuke
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量95 MB
メッセージ
テストケース(通過数/総数)
2/2
状態
メモリ使用量
データパターン1
AC
95 MB
データパターン2
AC
93 MB