๐ธ [solvesql] DVD ๋์ฌ์ ์ฐ์ ๊ณ ๊ฐ ์ฐพ๊ธฐ (MySQL)
solvesql 'DVD ๋์ฌ์ ์ฐ์ ๊ณ ๊ฐ ์ฐพ๊ธฐ' MySQL ํ์ด
๐ธ [solvesql] DVD ๋์ฌ์ ์ฐ์ ๊ณ ๊ฐ ์ฐพ๊ธฐ (MySQL)
๐ ๋ฌธ์ ์์ฝ
ํ์ฌ ์ ํจ ๊ณ ๊ฐ ์ค DVD ๋์ฌ ํ์๊ฐ 35ํ ์ด์์ธ ์ฐ์ ๊ณ ๊ฐ์ ID๋ฅผ ์กฐํํ๋ ๋ฌธ์ ์ด๋ค.
- ์กฐ๊ฑด
- ํ์ฌ ์ ํจ ๊ณ ๊ฐ๋ง ์กฐํ ๋์์ ํฌํจํ๋ค.
- ๊ณ ๊ฐ๋ณ DVD ๋์ฌ ํ์๋ฅผ ์ง๊ณํ๋ค.
- ๋์ฌ ํ์๊ฐ
35ํ์ด์์ธ ๊ณ ๊ฐ๋ง ์กฐํํ๋ค. - ๊ฒฐ๊ณผ์๋ ๊ณ ๊ฐ ID(
customer_id)๋ง ์ถ๋ ฅํ๋ค.
โ ํ์ด
SELECT๊ณ ๊ฐ idFROM๊ณ ๊ฐ ํ ์ด๋ธ, ๋์ฌ ์ ๋ณด ํ ์ด๋ธ joinWHERE์ ํจ ๊ณ ๊ฐGROUP BY๊ณ ๊ฐ id-
HAVING๋์ฌ ํ์ 35ํ ์ด์;๐ฝ
SELECT๊ณ ๊ฐ idFROMrental JOIN customer ON customer_idWHERE์ ํจ๊ณ ๊ฐ์ฌ๋ถ = trueGROUP BY๊ณ ๊ฐ id-
HAVINGCOUNT(๋์ฌ id) >= 35;
โจ๏ธ SQL ์ฟผ๋ฆฌ
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
c.customer_id
FROM
rental r
JOIN customer c
ON r.customer_id = c.customer_id
WHERE
c.active = true
GROUP BY
c.customer_id
HAVING
COUNT(r.rental_id) >= 35;
๐ก ํ์ด ํฌ์ธํธ
JOIN์ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ํ ์ด๋ธ์ ์ฐ๊ฒฐํ์ฌ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ์กฐํํ ์ ์๋ค.WHERE์ ์ ๊ทธ๋ฃนํ ์ด์ ์ ํ์ ํํฐ๋งํ๋ฏ๋ก, ์ ํจ ๊ณ ๊ฐ๋ง ๋์์ผ๋ก ์ง๊ณ๋ฅผ ์ํํ ์ ์๋ค.GROUP BY๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ ๊ฐ๋ณ๋ก ๋์ฌ ๋ด์ญ์ ๋ฌถ์ ํ ์ง๊ณํ ์ ์๋ค.COUNT(์ปฌ๋ผ)์NULL์ ์ ์ธํ ๊ฐ์ ๊ฐ์๋ฅผ ๊ณ์ฐํ๋ฉฐ, ํน์ ์ปฌ๋ผ์ ๊ฐ์๋ฅผ ์ง๊ณํ ๋ ์ฌ์ฉํ๋ค.- ์ง๊ณ ๊ฒฐ๊ณผ์ ์กฐ๊ฑด์ ์ ์ฉํ ๋๋
HAVING์ ์ ์ฌ์ฉํ๋ค.
๐ ๋ ๋ง์ solvesql ํ์ด
This post is licensed under
CC BY 4.0
by the author.