ソースコード
/*
都道府県別男女別に飲酒状況を集計した飲酒状況データより、都道府県別に毎日飲酒している人数の飲酒率を算出し、飲酒率が高い順に表示しなさい。人数は性別コード = '2' , '3' のデータを合算して求めなさい。
各コードの値は以下となっている。
カテゴリコード:'110' (総数)、'120' (毎日飲酒)、'130' (不明)
性別コード:'1' (不明)、'2' (男)、'3' (女)
飲酒率は、都道府県毎に下記の式で求め、小数点第2位を四捨五入する。
毎日飲酒人数/総調査人数×100
*/
with pre as
(
select
    pf_code
    ,round(cast(sum(case when category_code = '120' and gender_code in ('2','3') then amt else 0 end) as real) / sum(case when category_code = '110' and gender_code in ('2','3') then amt else 0 end) * 100,1) as PERCENTAGE
from
    DRINK_HABITS
group by
    pf_code
)   
select
    p.PF_CODE as CODE
    ,PF_NAME as NAME
    ,PERCENTAGE
from
    pre p
    left join
    PREFECTURE pr
        on
        p.pf_code = pr.pf_code
order by
    PERCENTAGE desc
    ,p.PF_CODE desc
提出情報
提出日時2022/09/22 07:06:50
コンテスト第2回 SQLコンテスト
問題飲酒率
受験者sayaensm
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量89 MB
メッセージ
テストケース(通過数/総数)
2/2
状態
メモリ使用量
データパターン1
AC
89 MB
データパターン2
AC
78 MB