位置情報
配点 : 40点難易度 : 4
制限実行時間 : 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の関数および構文などについては、「受験ルール・用語」をご確認ください。

問題

北海道の主な地区の位置情報を集計した位置テーブル(LOCATION_TBL)がある。地区のそれぞれの位置は、緯度(LATITUDE)と経度(LONGITUDE)で示されている。このテーブルより、地区コード= '1101' から各地区の位置を直線で結んだ長さが、長い順に地区コードを表示しなさい。また、表示する地区コードに'1101'は含めないこと。

※直線距離の算出ついて
本問題では、北海道は平面であるとし、球面上の距離としての考慮は不要とする。 経度をx軸、緯度をy軸で表したxy平面上の距離を直線距離として考えてよいものとする。 また、経度と緯度の1度あたりの距離は同じであるとする。

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

  • DISTRICT_CODE → CODE
  • DISTRICT_NAME → NAME
  • LATITUDE → LAT
  • LONGITUDE → LON

表示順

  1. 直線で結んだ長さの降順
  2. DISTRICT_CODEの昇順

※出典:政府統計の総合窓口(e-Stat)(https://www.e-stat.go.jp/)「令和2年国勢調査 人口等基本集計」を加工して作成
国土交通省(https://nlftp.mlit.go.jp/)「国土数値情報(位置参照データ)」を加工して作成

表示フォーマット

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

CODE NAME LAT LON
1223 根室市 43.367617 146.003754
1211 網走市 43.890257 144.275215
1214 稚内市 45.299825 141.834911
1220 士別市 44.099007 142.781584
1221 名寄市 44.339032 142.416811

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


テーブル定義

テーブル名: DISTRICT

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

テーブル名: LOCATION_TBL

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

サンプルデータ

テーブル名: DISTRICT

DISTRICT_CODE DISTRICT_NAME
1101 札幌市中央区
1202 函館市
1203 小樽市
1204 旭川市
1205 室蘭市
1206 釧路市
1207 帯広市
1208 北見市
1209 夕張市
1210 岩見沢市
1211 網走市
1212 留萌市
1213 苫小牧市
1214 稚内市
1215 美唄市
1216 芦別市
1217 江別市
1218 赤平市
1219 紋別市
1220 士別市
1221 名寄市
1222 三笠市
1223 根室市
1224 千歳市
1225 滝川市
1226 砂川市
1227 歌志内市
1228 深川市
1229 富良野市
1230 登別市
1231 恵庭市
1233 伊達市
1234 北広島市
1235 石狩市
1236 北斗市

テーブル名: LOCATION_TBL

PF_CODE DISTRICT_CODE LATITUDE LONGITUDE
01000 1101 43.044502 141.354139
01000 1202 41.757089 140.716562
01000 1203 43.191426 141.004925
01000 1204 43.807224 142.354654
01000 1205 42.3855 140.936264
01000 1210 43.170359 141.87684
01000 1211 43.890257 144.275215
01000 1212 43.861254 141.706942
01000 1213 42.66722 141.515154
01000 1214 45.299825 141.834911
01000 1220 44.099007 142.781584
01000 1221 44.339032 142.416811
01000 1222 43.243846 141.881371
01000 1223 43.367617 146.003754
01000 1224 42.821319 141.667526
01000 1225 43.555904 141.891599
01000 1226 43.521098 141.973009
01000 1227 43.520879 142.020838
01000 1228 43.722666 142.047411
01000 1229 43.352004 142.359884
01000 1230 42.398287 141.080418
01000 1231 42.880707 141.586875
01000 1233 42.465988 140.867344
01000 1234 42.987328 141.492424
01000 1235 43.478768 141.481144
01000 1236 41.834548 140.667831
Sorry, Japanese Only.