出荷状況確認
配点 : 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の関数および構文などについては、「受験ルール・用語」をご確認ください。

問題

売上データ(SALES)、売上データ明細(SALES_DTL)より、売上日(SALES_DATE)が2024年4月1日から2024年4月10日までのデータの出荷状況を表示しなさい。 このシステムでは、売上数量(SALES_QTY)に対して、実際に出荷された数量が出荷数量(DELIVERED_QTY)に設定される仕組みとなっている。

出荷状況は、売上データ明細の明細単位に下記の条件で判断して設定すること。

  • 出荷数量がゼロ → '未出荷'
  • 出荷数量がゼロ以外で、売上数量 > 出荷数量 → '一部出荷'
  • 売上数量 = 出荷数量 → '出荷済'

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

  • 売上日 → SAL_DATE
  • 売上データの売上番号 → NO
  • 商品コード → ITEM_CODE
  • 売上数量 → SAL_QTY
  • 出荷数量 → DEL_QTY
  • 出荷状況 → SHIP_STS

表示順

  1. 売上日の降順
  2. 売上データの売上番号の昇順
  3. 商品コードの昇順

表示フォーマット

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

SAL_DATE NO ITEM_CODE SAL_QTY DEL_QTY SHIP_STS
2024-04-10 S3007 P006 4 4 出荷済
2024-04-10 S3007 P007 5 0 未出荷
2024-04-10 S3008 P008 20 19 一部出荷
2024-04-09 S3005 P004 20 19 一部出荷
2024-04-04 S3004 P004 10 1 一部出荷

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


テーブル定義

テーブル名: SALES

主キー 列名 データ型 必須 デフォルト値
✔︎ SALES_NO VARCHAR ✔︎ NULL
ORDER_NO VARCHAR NULL
SALES_DATE VARCHAR ✔︎ NULL
SALES_TYPE INTEGER 1
DEPT_CODE VARCHAR ✔︎ NULL
CUST_CODE VARCHAR ✔︎ NULL
EMP_CODE VARCHAR ✔︎ NULL
SALES_AMT INTEGER ✔︎ 0
CMP_TAX INTEGER ✔︎ 0
SLIP_COMMENT VARCHAR NULL
INVOICED_DATE VARCHAR NULL
INVOICE_NO VARCHAR NULL
UPDATED_NO VARCHAR NULL
ORGNL_NO VARCHAR NULL
UPDATE_USER_NAME VARCHAR NULL
USER_UPDATE_DATETIME VARCHAR CURRENT_TIMESTAMP

テーブル名: SALES_DTL

主キー 列名 データ型 必須 デフォルト値
✔︎ SALES_NO VARCHAR ✔︎ NULL
✔︎ LINE_NO INTEGER ✔︎ NULL
ITEM_CODE VARCHAR ✔︎ NULL
UNITPRICE INTEGER ✔︎ 0
DELIVERED_QTY INTEGER 0
CMP_TAX_RATE INTEGER NULL
SALES_QTY INTEGER ✔︎ 1
DISCOUNT INTEGER ✔︎ 0
INVOICED_DATE VARCHAR NULL
INVOICE_NO VARCHAR NULL
INVOICE_DELAY_TYPE INTEGER NULL
UPDATE_USER_NAME VARCHAR NULL
USER_UPDATE_DATETIME VARCHAR CURRENT_TIMESTAMP

サンプルデータ

テーブル名: SALES

SALES_NO ORDER_NO SALES_DATE SALES_TYPE DEPT_CODE CUST_CODE EMP_CODE SALES_AMT CMP_TAX SLIP_COMMENT INVOICED_DATE INVOICE_NO UPDATED_NO ORGNL_NO UPDATE_USER_NAME USER_UPDATE_DATETIME
S3001 NULL 2024-03-31 1 D100 C100 E100 15000 1500 NULL NULL NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3002 NULL 2024-04-01 1 D200 C200 E200 27000 2700 NULL NULL NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3003 NULL 2024-04-02 1 D100 C100 E100 8000 800 NULL NULL NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3004 NULL 2024-04-04 1 D200 C200 E200 10000 1000 NULL NULL NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3005 NULL 2024-04-09 1 D200 C200 E200 20000 2000 NULL NULL NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3007 NULL 2024-04-10 1 D100 C100 E100 24500 2450 NULL NULL NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3008 NULL 2024-04-10 1 D200 C200 E200 20000 2000 NULL NULL NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3009 NULL 2024-04-11 1 D200 C200 E200 3000 300 NULL NULL NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3010 NULL 2024-04-04 1 D300 C500 E800 10000 1000 NULL NULL NULL NULL NULL SYSTEM 2024-04-20 10:10:10

テーブル名: SALES_DTL

SALES_NO LINE_NO ITEM_CODE UNITPRICE DELIVERED_QTY CMP_TAX_RATE SALES_QTY DISCOUNT INVOICED_DATE INVOICE_NO INVOICE_DELAY_TYPE UPDATE_USER_NAME USER_UPDATE_DATETIME
S3001 1 P001 1000 1 10 15 0 NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3002 1 P002 3000 9 10 9 0 NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3003 1 P003 1000 0 10 8 0 NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3004 1 P004 1000 1 10 10 0 NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3005 1 P004 1000 19 10 20 0 NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3007 1 P006 2500 4 10 4 0 NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3007 2 P007 2900 0 10 5 0 NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3008 1 P008 1000 19 10 20 0 NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3009 1 P009 1000 3 10 3 0 NULL NULL NULL SYSTEM 2024-04-20 10:10:10
S3010 1 P010 1000 10 10 10 0 NULL NULL NULL SYSTEM 2024-04-20 10:10:10

Sorry, Japanese Only.