SQLのwhereについての考え方
解決したいこと
ProgateにてSQLを勉強中です。
答えをみても、どうしてもsales_recordsからデータを取ってきてitemsとくっつける、という部分が理解できません。gender, SUM(price)はitemsにあるデータなのでわざわざwhere sales_recordsになるのが理解できません。
教えていただけますとさいわいです。
問題
男性向け商品、女性向け商品、男女兼用商品それぞれの
・性別(0・1・2の数字)
・売上額
を取得してください。
また、「売上額」には
売上額
と名前を付けてください。
自分が書いたコード
select gender, SUM(price) AS "売上額"
from items
group by gender;
答えのコード
SELECT items.gender, SUM(items.price) AS "売上額"
FROM sales_records
JOIN items
ON sales_records.item_id = items.id
GROUP BY items.gender;
データベース
items
id name gender price cost
1 スカート 1 4000 800
2 デニムパンツ 0 6500 2900
3 デニムパンツ 1 6000 2600
4 キャップ 2 1500 300
5 ブラウス 1 8000 2000
6 靴下 2 1000 250
7 カットソー 1 3400 200
8 ショートパンツ 1 3200 1100
9 ショートパンツ 0 2200 900
10 紺Tシャツ 2 2000 900
11 白Tシャツ 2 2000 800
12 黒Tシャツ 2 2300 800
13 グレーTシャツ 2 2300 1000
14 青スニーカー 2 3000 1400
15 赤スニーカー 2 4200 1600
16 白スニーカー 2 4000 1600
sales_records
id user_id item_id purchased_at
1 204 28 2017-07-01
2 99 8 2017-07-01
3 97 17 2017-07-01
4 223 22 2017-07-01
5 130 19 2017-07-01
6 259 12 2017-07-01
7 266 15 2017-07-01
8 91 29 2017-07-01
9 166 9 2017-07-01
10 271 9 2017-07-01
11 159 3 2017-07-01
12 120 17 2017-07-01
13 143 17 2017-07-01
14 162 15 2017-07-01
15 206 24 2017-07-01
16 186 15 2017-07-01
17 38 3 2017-07-02
18 213 15 2017-07-02
users
id name gender age
1 Giana 1 17
2 Diann 1 22
3 Antonella 1 22
4 Jodi 0 29
5 Fredra 1 54
6 Katheryn 1 25
7 Billie 0 21
8 Fawn 1 59
9 Caroline 1 47
10 Nichol 1 26
11 Else 1 25
12 Leigh 1 20
13 Virgie 0 63
14 Lorilee 1 39
15 Dorolisa 1 22
16 Olly 0 36
17 Marcelle 1 16
18 Lisetta 1 27
※データベースは数が多かったので全ては載せていません。