ソースコード
select
p.PF_CODE as "都道府県コード"
,p.PF_NAME as "都道府県名"
,x1.NATION_NAME as "1位 国名"
,x1.AMT as "1位 人数"
,x2.NATION_NAME as "2位 国名"
,x2.AMT as "2位 人数"
,x3.NATION_NAME as "3位 国名"
,x3.AMT as "3位 人数"
,xsum.AMT as "合計人数"
from 
PREFECTURE p,
(
select
f1.PF_CODE
,n.NATION_NAME
,f1.AMT
from
(
select 
f.PF_CODE
,RANK() OVER(PARTITION BY f.PF_CODE ORDER BY f.AMT desc,f.NATION_CODE asc) as order_num
,f.NATION_CODE
,f.AMT
from 
FOREIGNER f
where f.NATION_CODE<>113
) f1 , NATIONALITY n
where f1.order_num=1
and f1.NATION_CODE=n.NATION_CODE
)x1

left join 
(
select
f1.PF_CODE
,n.NATION_NAME
,f1.AMT
from
(
select 
f.PF_CODE
,RANK() OVER(PARTITION BY f.PF_CODE ORDER BY f.AMT desc,f.NATION_CODE asc) as order_num
,f.NATION_CODE
,f.AMT
from 
FOREIGNER f
where f.NATION_CODE<>113
) f1 , NATIONALITY n
where f1.order_num=2
and f1.NATION_CODE=n.NATION_CODE
)x2
on 
x1.PF_CODE=x2.PF_CODE

left join 
(
select
f1.PF_CODE
,n.NATION_NAME
,f1.AMT
from
(
select 
f.PF_CODE
,RANK() OVER(PARTITION BY f.PF_CODE ORDER BY f.AMT desc,f.NATION_CODE asc) as order_num
,f.NATION_CODE
,f.AMT
from 
FOREIGNER f
where f.NATION_CODE<>113
) f1 , NATIONALITY n
where f1.order_num=3
and f1.NATION_CODE=n.NATION_CODE
)x3
on 
x1.PF_CODE=x3.PF_CODE

left join 
(
select 
f.PF_CODE
,sum(f.AMT) as AMT
from 
FOREIGNER f
where f.NATION_CODE<>113
group by f.PF_CODE
)xsum
on 
x1.PF_CODE=xsum.PF_CODE


where
p.PF_CODE=x1.PF_CODE

order by "合計人数" desc,"都道府県コード" asc
提出情報
提出日時2022/07/20 22:19:11
コンテスト第1回 SQLコンテスト
問題外国籍分布
受験者red3
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量100 MB
メッセージ
テストケース(通過数/総数)
2/2
状態
メモリ使用量
データパターン1
AC
42 MB
データパターン2
AC
100 MB