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

問題

受注データ(ORDERS)の備考(SLIP_COMMENT)に、受注された商品の商品コードがカンマ区切りで設定されている。備考から、カンマで区切られた商品数をカウントして表示しなさい。備考には最低1商品が記入されており、商品は必ずカンマ区切りになっているものとする。また、商品コードの桁数は固定ではないものとする。

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

  • 受注番号 → OD_NO
  • 備考 → COMMENT
  • カウントした商品数 → CNT

表示順

  1. CNTの降順
  2. OD_NOの降順

表示フォーマット

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

OD_NO COMMENT CNT
OD1004 1,2,3,4,5,6,7,8,9,10 10
OD1005 001,0002,0003,04 4
OD1003 P20000,P20,1234 3
OD1001 P001,P002,P003 3
OD1002 P101 1

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


テーブル定義

テーブル名: ORDERS

主キー 列名 データ型 必須 デフォルト値
✔︎ ORDER_NO VARCHAR ✔︎ NULL
ORDER_DATE VARCHAR ✔︎ NULL
DEPT_CODE VARCHAR ✔︎ NULL
CUST_CODE VARCHAR ✔︎ NULL
EMP_CODE VARCHAR ✔︎ NULL
REQUIRED_DATE VARCHAR NULL
CUSTORDER_NO VARCHAR NULL
WH_CODE VARCHAR ✔︎ NULL
ORDER_AMNT INTEGER ✔︎ 0
CMP_TAX INTEGER ✔︎ 0
SLIP_COMMENT VARCHAR ✔︎ NULL
UPDATE_USER_NAME VARCHAR NULL
USER_UPDATE_DATETIME VARCHAR CURRENT_TIMESTAMP

サンプルデータ

テーブル名: ORDERS

ORDER_NO ORDER_DATE DEPT_CODE CUST_CODE EMP_CODE REQUIRED_DATE CUSTORDER_NO WH_CODE ORDER_AMNT CMP_TAX SLIP_COMMENT UPDATE_USER_NAME USER_UPDATE_DATETIME
OD1001 2024-07-06 D100 C1001 E002 NULL NULL 300 28000 2800 P001,P002,P003 SYSTEM 2024-07-30 01:01:01
OD1002 2024-07-07 D200 C1001 E003 NULL NULL 200 7200 720 P101 SYSTEM 2024-07-30 01:01:01
OD1003 2024-07-08 D200 C1001 E002 NULL NULL 100 25000 2500 P20000,P20,1234 SYSTEM 2024-07-30 01:01:01
OD1004 2024-07-09 D100 C1001 E002 NULL NULL 100 26400 2640 1,2,3,4,5,6,7,8,9,10 SYSTEM 2024-07-30 01:01:01
OD1005 2024-07-10 D100 C1001 E001 NULL NULL 100 24000 2400 001,0002,0003,04 SYSTEM 2024-07-30 01:01:01

Sorry, Japanese Only.