๐ธ [solvesql] ์คํฌํ๋ฅผ ์ฐ์ด๋๋ ค์ (MySQL)
solvesql '์คํฌํ๋ฅผ ์ฐ์ด๋๋ ค์' MySQL ํ์ด
๐ธ [solvesql] ์คํฌํ๋ฅผ ์ฐ์ด๋๋ ค์ (MySQL)
๐ ๋ฌธ์ ์์ฝ
์์์ฆ ๊ธ์ก์ ๋ฐ๋ผ ์ง๊ธ๋๋ ์คํฌํ ๊ฐ์๋ฅผ ๊ณ์ฐํ ํ, ์คํฌํ ๊ฐ์๋ณ ์์์ฆ ์๋ฅผ ์ง๊ณํ๋ ๋ฌธ์ ์ด๋ค.
- ์กฐ๊ฑด
- ์์ ๊ธ์ก์ด
25๋ฌ๋ฌ์ด์์ด๋ฉด ์คํฌํ2๊ฐ๋ฅผ ์ง๊ธํ๋ค. - ์์ ๊ธ์ก์ด
15๋ฌ๋ฌ์ด์25๋ฌ๋ฌ๋ฏธ๋ง์ด๋ฉด ์คํฌํ1๊ฐ๋ฅผ ์ง๊ธํ๋ค. - ์์ ๊ธ์ก์ด
15๋ฌ๋ฌ๋ฏธ๋ง์ด๋ฉด ์คํฌํ๋ฅผ ์ง๊ธํ์ง ์๋๋ค. - ์คํฌํ ๊ฐ์๋ณ ์์์ฆ ๊ฐ์๋ฅผ ์ง๊ณํ๋ค.
- ๊ฒฐ๊ณผ ์ปฌ๋ผ๋ช
์
stamp,count_bill๋ก ์ง์ ํ๋ค. - ์คํฌํ ๊ฐ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค.
- ์์ ๊ธ์ก์ด
โ ํ์ด
SELECT์์ ๊ธ์ก์ ๋ฐ๋ฅธ ์คํฌํ ๊ฐ์, ์คํฌํ๋ณ ๊ฐ์FROMtipsGROUP BY์คํฌํ ๊ฐ์-
ORDER BY์คํฌํ ๊ฐ์;๐ฝ
SELECT- CASE
- WHEN ์์ ๊ธ์ก < 15 THEN 0
- WHEN ์์ ๊ธ์ก < 25 THEN 1
- ELSE 2
- END AS stamp,
- COUNT(*) AS count_bill
- CASE
FROMtipsGROUP BYstamp-
ORDER BYstamp;
โจ๏ธ SQL ์ฟผ๋ฆฌ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
CASE
WHEN total_bill < 15 THEN 0
WHEN total_bill < 25 THEN 1
ELSE 2
END AS stamp,
COUNT(*) AS count_bill
FROM
tips
GROUP BY
stamp
ORDER BY
stamp;
๐ก ํ์ด ํฌ์ธํธ
CASE๋ฌธ์ ์ฌ์ฉํ๋ฉด ์กฐ๊ฑด์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ๊ฐ์ ๋ฐํํ ์ ์์ผ๋ฉฐ, ์กฐํ ๊ฒฐ๊ณผ์ ์๋ก์ด ๊ฐ์ ์์ฑํ ๋ ์์ฃผ ์ฌ์ฉ๋๋ค.CASE๋ฌธ์ ์กฐ๊ฑด์ ์์์๋ถํฐ ์์ฐจ์ ์ผ๋ก ๊ฒ์ฌํ๋ฏ๋ก, ๋ฒ์ ์กฐ๊ฑด์ ์์ฑํ ๋๋ ์กฐ๊ฑด์ ์์๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค.GROUP BY์๋CASE๋ฌธ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ์คํฌํ ๊ฐ์๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ ์ ์๋ค.COUNT(*)๋ ๊ฐ ๊ทธ๋ฃน์ ํฌํจ๋ ํ์ ๊ฐ์๋ฅผ ์ง๊ณํ ๋ ์ฌ์ฉํ๋ค.ORDER BY๋ฅผ ์ฌ์ฉํ๋ฉด ์ง๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ํ๋ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ์ ์๋ค.- MySQL์์๋
SELECT์ ์์ ์ ์ํ ๋ณ์นญ(stamp)์GROUP BY์์ ์ฌ์ฉํ ์ ์๋ค.- ํ์ง๋ง ์ผ๋ถ DBMS์์๋
GROUP BY์์SELECT๋ณ์นญ์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์,CASE๋ฌธ์GROUP BY์ ๋ค์ ์์ฑํ๊ฑฐ๋ CTE/์๋ธ์ฟผ๋ฆฌ๋ก ๋จผ์ ๊ณ์ฐํ ๋ค ์ง๊ณํด์ผ ํ๋ค.
- ํ์ง๋ง ์ผ๋ถ DBMS์์๋
๐ ๋ ๋ง์ solvesql ํ์ด
This post is licensed under
CC BY 4.0
by the author.