ソースコード
-- 都道府県別男女別に飲酒状況を集計した飲酒状況データより、都道府県別に毎日飲酒している人数の飲酒率を算出し、飲酒率が高い順に表示しなさい。
-- 人数は性別コード = '2' , '3' のデータを合算して求めなさい。

-- 各コードの値は以下となっている。

-- カテゴリコード:'110' (総数)、'120' (毎日飲酒)、'130' (不明)
-- 性別コード:'1' (不明)、'2' (男)、'3' (女)
-- 飲酒率は、都道府県毎に下記の式で求め、小数点第2位を四捨五入する。

-- 総調査人数
-- 毎日飲酒人数
-- ​
--  ×100

-- 表示項目は以下とする。(エイリアスを使用し→の項目名とする)

-- PF_CODE → CODE
-- PF_NAME → NAME
-- 都道府県毎の毎日飲酒率 → PERCENTAGE
-- 表示順

-- 飲酒率の降順
-- 都道府県コードの降順

WITH
base AS (
    SELECT
        PF_CODE
        , CAST(SUM(CASE WHEN CATEGORY_CODE = '110' THEN AMT ELSE 0 END) AS REAL) AS "総調査人数"
        , CAST(SUM(CASE WHEN CATEGORY_CODE = '120' THEN AMT ELSE 0 END) AS REAL) AS "毎日飲酒人数"
    FROM
        DRINK_HABITS
    WHERE
        GENDER_CODE IN ('2', '3')
    GROUP BY
        PF_CODE
)
SELECT
    PF_CODE AS CODE
    , PF_NAME AS NAME
    , ROUND("毎日飲酒人数" / "総調査人数" * 100, 1) AS PERCENTAGE
FROM
    base
LEFT JOIN
    PREFECTURE
USING (PF_CODE)

ORDER BY
    PERCENTAGE DESC
    , PF_CODE DESC
提出情報
提出日時2023/01/10 18:21:22
コンテスト第2回 SQLコンテスト
問題飲酒率
受験者res1235
状態 (詳細)AC
(Accepted: 正答)
メモリ使用量79 MB
メッセージ
テストケース(通過数/総数)
2/2
状態
メモリ使用量
データパターン1
AC
79 MB
データパターン2
AC
76 MB