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

問題

売上テーブル(SALES)より、2024年3月1日から28日までの4週間分のデータを集計し、売上件数と売上金額合計(SALES_AMT)の一日当たりの平均値を曜日別に表示しなさい。

また、売上区分(SALES_TYPE) = 2 (売上返品)のデータ、および、赤黒伝票番号(UPDATED_NO)の値がNULL値以外(赤伝)のデータは集計対象外とする。

下記の項目を曜日ごとに集計して表示すること。(エイリアスを使用し→の項目名とする)

  • '日'からスタートして'金'、'土'までを表示 → WEEK
  • 売上データの件数の1日平均件数を曜日別に集計(小数点以下は四捨五入) → AVG_CNT
  • 売上金額合計の1日平均金額を曜日別に集計(小数点以下は四捨五入) → AVG_AMT

※金額は3桁ごとにカンマを入れ、最後に'円'を付けること。
ただし、使用されるデータの売上金額合計の値は最大9桁であることが保証される。
(printf関数の拡張機能は利用できないので注意すること。)

なお、同じ曜日の売上が1件もない場合は、その曜日は件数、金額とも0として表示すること。

表示順

  1. 曜日順('日'~'土')

表示フォーマット

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

WEEK AVG_CNT AVG_AMT
0 0円
3 2,617,661円
1 67,662円
2 139,444円
2 301,460円

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

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
S2029 NULL 2024-03-01 1 D200 C200 E200 50000 5000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2030 NULL 2024-03-02 1 D200 C200 E200 60000 6000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2031 NULL 2024-03-02 1 D100 C100 E100 70000 7000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2032 NULL 2024-03-04 1 D200 C200 E200 80000 8000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2033 NULL 2024-03-04 1 D200 C200 E200 90000 9000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2034 NULL 2024-03-06 1 D200 C200 E200 100000 10000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2035 NULL 2024-03-07 1 D100 C100 E100 110000 11000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2036 NULL 2024-03-08 1 D200 C200 E200 120000 12000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2037 NULL 2024-03-09 1 D100 C100 E100 10000 1000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2038 NULL 2024-03-09 1 D200 C200 E200 20000 2000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2039 NULL 2024-03-11 1 D100 C100 E100 30000 3000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2040 NULL 2024-03-12 1 D200 C200 E200 40000 4000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2041 NULL 2024-03-13 1 D200 C200 E200 50000 5000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2042 NULL 2024-03-14 1 D200 C200 E200 60000 6000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2043 NULL 2024-03-15 1 D100 C100 E100 70000 7000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2044 NULL 2024-03-16 1 D200 C200 E200 80000 8000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2045 NULL 2024-03-18 1 D200 C200 E200 90000 9000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2046 NULL 2024-03-18 1 D200 C200 E200 100000 10000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2047 NULL 2024-03-19 1 D100 C100 E100 110000 11000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2048 NULL 2024-03-20 1 D200 C200 E200 120000 12000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2049 NULL 2024-03-21 1 D100 C100 E100 5600 560 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2050 NULL 2024-03-22 1 D200 C200 E200 3980 398 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2051 NULL 2024-03-23 1 D100 C100 E100 9000 900 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2052 NULL 2024-03-25 1 D200 C200 E200 8790 879 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2053 NULL 2024-03-25 1 D200 C200 E200 124000 12400 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2054 NULL 2024-03-26 1 D300 C500 E800 13980 1398 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2055 NULL 2024-03-27 1 D100 C100 E100 90000 9000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2056 NULL 2024-03-28 1 D200 C200 E200 890240 89024 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2057 NULL 2024-03-01 1 D200 C200 E200 18900 1890 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2058 NULL 2024-03-02 1 D300 C500 E800 111000 11100 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2059 NULL 2024-03-02 1 D100 C100 E100 24500 2450 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2060 NULL 2024-03-04 1 D200 C200 E200 892300 89230 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2061 NULL 2024-03-05 2 D200 C200 E200 -2000 -200 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2062 NULL 2024-03-06 2 D200 C200 E200 -3000 -300 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2063 NULL 2024-03-07 1 D200 C200 E200 5000 500 NULL NULL NULL S2064 NULL SYSTEM 2024-04-01 10:10:10
S2064 NULL 2024-03-08 1 D200 C200 E200 -5000 -500 NULL NULL NULL S2063 NULL SYSTEM 2024-04-01 10:10:10
S2065 NULL 2024-03-09 1 D200 C200 E200 5500 550 NULL NULL NULL NULL S2063 SYSTEM 2024-04-01 10:10:10
S2066 NULL 2024-03-11 1 D100 C100 E100 5000000 500000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2067 NULL 2024-03-11 1 D200 C200 E200 4000000 400000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2068 NULL 2024-03-12 1 D200 C200 E200 50000 5000 NULL NULL NULL S2069 NULL SYSTEM 2024-04-01 10:10:10
S2069 NULL 2024-03-13 1 D200 C200 E200 -50000 -5000 NULL NULL NULL S2068 NULL SYSTEM 2024-04-01 10:10:10
S2070 NULL 2024-03-14 1 D200 C200 E200 40000 4000 NULL NULL NULL NULL S2068 SYSTEM 2024-04-01 10:10:10
S2071 NULL 2024-03-15 2 D200 C200 E200 -30000 -3000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2072 NULL 2024-03-16 2 D200 C200 E200 -40000 -4000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2073 NULL 2024-03-17 1 D200 C200 E200 20000 2000 NULL NULL NULL S2074 NULL SYSTEM 2024-04-01 10:10:10
S2074 NULL 2024-03-18 1 D200 C200 E200 -20000 -2000 NULL NULL NULL S2073 NULL SYSTEM 2024-04-01 10:10:10
S2075 NULL 2024-03-19 1 D200 C200 E200 40000 4000 NULL NULL NULL NULL S2073 SYSTEM 2024-04-01 10:10:10
S2076 NULL 2024-03-20 1 D200 C200 E200 120000 12000 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2077 NULL 2024-03-21 1 D100 C100 E100 11111 1111 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2078 NULL 2024-03-22 1 D200 C200 E200 22222 2222 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2079 NULL 2024-03-23 1 D100 C100 E100 33333 3333 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2080 NULL 2024-03-23 1 D200 C200 E200 44444 4444 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2081 NULL 2024-03-25 1 D200 C200 E200 55555 5555 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2082 NULL 2024-03-26 1 D200 C200 E200 66666 6666 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2083 NULL 2024-03-27 1 D100 C100 E100 77777 7777 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10
S2084 NULL 2024-03-28 1 D200 C200 E200 88888 8888 NULL NULL NULL NULL NULL SYSTEM 2024-04-01 10:10:10

Sorry, Japanese Only.