地域ごとの数量加重の平均単価(集約どうしの割り算)

上級

問題文

問題

sales テーブルについて、地域(region)ごとに 「総売上金額 ÷ 総数量」= 1個あたりの平均単価を求め、その値の高い順に出力してください。 (単純な AVG(unit_price) ではなく、数量で重み付けした平均です。) 平均単価は 小数第1位までにしてください。

出力する列は次の3つ、この順序・この列名で出してください:

列名内容
region地域
total_salesその地域の総売上金額(quantity * unit_price の合計)
avg_price_per_unit総売上 ÷ 総数量(小数第1位)
ヒントを見る

集約どうしを割り算できます: SUM(quantity * unit_price) / SUM(quantity)。 整数割り算を避けるため 1.0 * を掛け、ROUND(値, 1) で小数1桁に丸めます。

スキーマ

使用データベース:PostgreSQL 16
sales20
idsale_dateregioncategoryquantityunit_price
12024-01-05EastElectronics31200
22024-01-12WestElectronics11500
32024-01-20EastBooks5900
42024-02-03NorthElectronics21100
52024-02-14WestBooks4800
62024-02-22EastToys6400
72024-03-01NorthBooks3950
82024-03-09WestToys7350
92024-03-18EastElectronics21300
102024-03-27NorthToys5420
112024-04-04WestElectronics41250
122024-04-15EastBooks2880
132024-04-23NorthElectronics11400
142024-05-06WestBooks6770
152024-05-19EastToys8360
162024-05-28NorthBooks4910
172024-06-07WestElectronics31180
182024-06-16EastElectronics51220
192024-06-25NorthToys9380
202024-06-30WestToys2340

SQL

⌘⏎ / Ctrl+Enter で実行
エディタを読み込み中…

「実行」を押すと、ここにSQLの実行結果が表示されます。