ソースコード
select
    PRE.PF_CODE as 都道府県コード
,   PRE.PF_NAME as 都道府県名
,   FIRST.NATION_NAME as '1位 国名'
,   FIRST.AMT as '1位 人数'
,   SECOND.NATION_NAME as '2位 国名'
,   SECOND.AMT as '2位 人数'
,   THIRD.NATION_NAME as '3位 国名'
,   THIRD.AMT as '3位 人数'
,   TTL.AMT as 合計人数
from
    PREFECTURE as PRE
join
(
    select
        AMT_RANK.PF_CODE as PF_CODE
    ,   AMT_RANK.NATION_NAME as NATION_NAME
    ,   AMT_RANK.AMT as AMT
    from
    (
        select
            FOR.PF_CODE as PF_CODE
        ,   NAT.NATION_NAME as NATION_NAME
        ,   FOR.AMT as AMT
        ,   RANK() OVER(PARTITION BY FOR.PF_CODE ORDER BY FOR.AMT DESC, FOR.NATION_CODE) as RANK
        from
            FOREIGNER as FOR
        ,   NATIONALITY as NAT
        where
            FOR.NATION_CODE = NAT.NATION_CODE
        and FOR.NATION_CODE != '113'
    ) as AMT_RANK
    where AMT_RANK.RANK = 1
) as FIRST
on PRE.PF_CODE = FIRST.PF_CODE
join
(
    select
        AMT_RANK.PF_CODE as PF_CODE
    ,   AMT_RANK.NATION_NAME as NATION_NAME
    ,   AMT_RANK.AMT as AMT
    from
    (
        select
            FOR.PF_CODE as PF_CODE
        ,   NAT.NATION_NAME as NATION_NAME
        ,   FOR.AMT as AMT
        ,   RANK() OVER(PARTITION BY FOR.PF_CODE ORDER BY FOR.AMT DESC, FOR.NATION_CODE) as RANK
        from
            FOREIGNER as FOR
        ,   NATIONALITY as NAT
        where
            FOR.NATION_CODE = NAT.NATION_CODE
        and FOR.NATION_CODE != '113'
    ) as AMT_RANK
    where AMT_RANK.RANK = 2
) as SECOND
on PRE.PF_CODE = SECOND.PF_CODE
join
(
    select
        AMT_RANK.PF_CODE as PF_CODE
    ,   AMT_RANK.NATION_NAME as NATION_NAME
    ,   AMT_RANK.AMT as AMT
    from
    (
        select
            FOR.PF_CODE as PF_CODE
        ,   NAT.NATION_NAME as NATION_NAME
        ,   FOR.AMT as AMT
        ,   RANK() OVER(PARTITION BY FOR.PF_CODE ORDER BY FOR.AMT DESC, FOR.NATION_CODE) as RANK
        from
            FOREIGNER as FOR
        ,   NATIONALITY as NAT
        where
            FOR.NATION_CODE = NAT.NATION_CODE
        and FOR.NATION_CODE != '113'
    ) as AMT_RANK
    where AMT_RANK.RANK = 3
) as THIRD
on PRE.PF_CODE = THIRD.PF_CODE
join
(
    select
        FOR.PF_CODE as PF_CODE
    ,   sum(FOR.AMT) as AMT
    from
        FOREIGNER as FOR
    group by
        FOR.PF_CODE
) as TTL
on PRE.PF_CODE = TTL.PF_CODE
提出情報
提出日時2022/07/22 03:04:08
コンテスト第1回 SQLコンテスト
問題外国籍分布
受験者marocas
状態 (詳細)WA
(Wrong Answer: 誤答)
メモリ使用量81 MB
メッセージ
テストケース(通過数/総数)
0/2
状態
メモリ使用量
データパターン1
WA
81 MB
データパターン2
WA
77 MB