飲酒率
配点 : 30点難易度 : 3
制限実行時間 : 1000ms制限メモリ使用量 : 128 MB
SQLiteの注意点

TOPSIC SQLでは、SQLの実行環境にSQLiteを使用しています。SQLite以外のRDBMSの文法を使用することはできません。
問題を解く際に注意すべきSQLiteの制約について、以下に記載してありますのでご確認下さい。

  1. NUMERIC、INTEGER、REALは、自身のクラスへの変換が推奨されていますが、変換できなかった場合でも、そのまま格納されます。
  2. 新しくデータを追加した場合、既に格納されているデータの中で ROWID の値が最大のものを探し、それに1を加えた値が新しく追加されるデータの ROWID の値として保存されます。
  3. 外部結合は、左外部結合を行う LEFT OUTER JOIN 句のみ使用できます。
    ※2022年12月以降、LEFT / RIGHT / FULL OUTER JOIN が使用可能となりました。
  4. 指定した日付と時刻のタイムゾーンはUTCとして扱われます。
  5. 日付関数や文字列関数については、SQLiteで固有の関数があります。
  6. テーブル項目の論理名が「◯◯日」となっている場合は、日付項目の時分秒は設定されていません。論理名が「◯◯日時」となっている場合は、日付項目の時分秒まで設定されています。
    • 「受注日」の場合は「2021-01-01」
    • 「受注日時」の場合は「2021-01-01 15:15:15」

その他のSQLiteの制約については、SQLiteの公式ドキュメントをご確認ください。
また、ER図の読み方やSQLiteの関数および構文などについては、「受験ルール・用語」をご確認ください。

問題

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

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

  • カテゴリコード:'110' (総数)、'120' (毎日飲酒)、'130' (不明)
  • 性別コード:'1' (不明)、'2' (男)、'3' (女)

飲酒率は、都道府県毎に下記の式で求め、小数点第2位を四捨五入する。

\( \frac{毎日飲酒人数}{総調査人数} \times 100 \)

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

  • PF_CODE → CODE
  • PF_NAME → NAME
  • 都道府県毎の毎日飲酒率 → PERCENTAGE

表示順

  1. 飲酒率の降順
  2. 都道府県コードの降順

※出典:政府統計の総合窓口(e-Stat)(https://www.e-stat.go.jp/)「令和元年国民生活基礎調査 健康 都道府県編」を加工して作成

表示フォーマット

※あくまでフォーマットを示すもので、正解例ではありません。行数も正解とは異なります。

CODE NAME PERCENTAGE
05000 秋田県 20.4
02000 青森県 18.6
03000 岩手県 18.5
07000 福島県 17.4
04000 宮城県 17.2

ER図 (半角:物理名、全角:論理名)


テーブル定義

テーブル名: DRINK_HABITS

主キー 列名 データ型 必須 デフォルト値
✔︎ CATEGORY_CODE VARCHAR ✔︎ NULL
✔︎ GENDER_CODE VARCHAR ✔︎ NULL
✔︎ PF_CODE VARCHAR ✔︎ NULL
AMT INTEGER NULL

テーブル名: PREFECTURE

主キー 列名 データ型 必須 デフォルト値
✔︎ PF_CODE VARCHAR ✔︎ NULL
PF_NAME VARCHAR NULL

サンプルデータ

テーブル名: DRINK_HABITS

CATEGORY_CODE GENDER_CODE PF_CODE AMT
110 2 01000 1984
110 2 02000 483
110 2 03000 473
110 2 04000 876
110 2 05000 375
110 2 06000 414
110 2 07000 693
110 2 08000 1105
110 2 09000 764
110 2 10000 738
110 3 01000 2342
110 3 02000 555
110 3 03000 524
110 3 04000 946
110 3 05000 427
110 3 06000 454
110 3 07000 743
110 3 08000 1142
110 3 09000 792
110 3 10000 771
120 1 09000 53
120 2 01000 494
120 2 02000 149
120 2 03000 147
120 2 04000 241
120 2 05000 133
120 2 06000 120
120 2 07000 191
120 2 08000 276
120 2 09000 200
120 2 10000 192
120 3 01000 192
120 3 02000 44
120 3 03000 37
120 3 04000 72
120 3 05000 31
120 3 06000 28
120 3 07000 59
120 3 08000 68
120 3 09000 53
120 3 10000 52
130 1 10000 52
130 3 08000 68

テーブル名: PREFECTURE

PF_CODE PF_NAME
01000 北海道
02000 青森県
03000 岩手県
04000 宮城県
05000 秋田県
06000 山形県
07000 福島県
08000 茨城県
09000 栃木県
10000 群馬県
11000 埼玉県
12000 千葉県
13000 東京都
14000 神奈川県
15000 新潟県
16000 富山県
17000 石川県
18000 福井県
19000 山梨県
20000 長野県
21000 岐阜県
22000 静岡県
23000 愛知県
24000 三重県
25000 滋賀県
26000 京都府
27000 大阪府
28000 兵庫県
29000 奈良県
30000 和歌山県
31000 鳥取県
32000 島根県
33000 岡山県
34000 広島県
35000 山口県
36000 徳島県
37000 香川県
38000 愛媛県
39000 高知県
40000 福岡県
41000 佐賀県
42000 長崎県
43000 熊本県
44000 大分県
45000 宮崎県
46000 鹿児島県
47000 沖縄県
Sorry, Japanese Only.