部署別受注一覧
配点 : 20点難易度 : 2
制限実行時間 : 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の関数および構文などについては、「受験ルール・用語」をご確認ください。

問題

受注テーブル(TBL_ORDERS)、部署テーブル(TBL_DEPT)、顧客テーブル(TBL_CUST)の3テーブルより、下記の条件を満たすSQLを作成して該当データを抽出しなさい。

【条件】

  1. 部署テーブルに受注テーブルのDEPT_CODEが存在しない場合は、抽出対象外とすること
  2. 顧客テーブルに受注テーブルのCUST_CODEが存在しなくても抽出対象とすること

表示項目は以下とする。

  • 部署テーブルのDEPT_CODE
  • DEPT_NAME
  • ORDER_NO
  • 顧客テーブルのCUST_CODE
  • CUST_NAME
  • ORDER_AMT

表示順

  1. DEPT_CODEの昇順
  2. ORDER_NOの昇順

表示フォーマット

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

DEPT_CODE DEPT_NAME ORDER_NO CUST_CODE CUST_NAME ORDER_AMT
10 営業1課 D0100 123 ABC商会 10000
10 営業1課 D0104 789 小津産業 33000
20 営業2課 D0101 345 山田商事 3300
20 営業2課 D0105 789 小津産業 11000
30 営業3課 D0102 NULL NULL 45000

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


テーブル定義

テーブル名: TBL_CUST

主キー 列名 データ型 必須 デフォルト値
✔︎ CUST_CODE NUMBER ✔︎ NULL
CUST_NAME VARCHAR ✔︎ NULL
CUST_KANA VARCHAR NULL
CUST_TEL VARCHAR NULL

テーブル名: TBL_DEPT

主キー 列名 データ型 必須 デフォルト値
✔︎ DEPT_CODE NUMBER ✔︎ NULL
DEPT_NAME VARCHAR NULL

テーブル名: TBL_ORDERS

主キー 列名 データ型 必須 デフォルト値
✔︎ ORDER_NO VARCHAR ✔︎ NULL
ORDER_DATE VARCHAR ✔︎ NULL
DEPT_CODE NUMBER ✔︎ NULL
CUST_CODE NUMBER ✔︎ NULL
ORDER_AMT NUMBER ✔︎ 0

サンプルデータ

テーブル名: TBL_CUST

CUST_CODE CUST_NAME CUST_KANA CUST_TEL
123 ABC商会 エービーシーショウカイ 00011112222
345 山田商事 ヤマダショウジ 11133334444
567 鈴木商店 スズキショウテン 33344445555
789 小津産業 オズサンギョウ 77700004444

テーブル名: TBL_DEPT

DEPT_CODE DEPT_NAME
10 営業1課
20 営業2課
30 営業3課
40 営業4課

テーブル名: TBL_ORDERS

ORDER_NO ORDER_DATE DEPT_CODE CUST_CODE ORDER_AMT
D0100 2024-04-01 10 123 10000
D0101 2024-04-02 20 345 3300
D0102 2024-04-03 30 444 45000
D0103 2024-04-04 60 567 27000
D0104 2024-04-05 10 789 33000
D0105 2024-04-06 20 789 11000
D0106 2024-04-07 40 222 34000
D0107 2024-04-08 50 123 22000

Sorry, Japanese Only.