์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 4์ฃผ ํ๋ก์ ํธ
- ๋ฆฌ์กํธ
- ์๋ฐ์คํฌ๋ฆฝํธ
- js
- til
- ๋ฆฌ๋์ค
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ฝ์ด ์๋ฐ์คํฌ๋ฆฝํธ
- SQL ๊ณ ๋์ Kit
- javascript
- Async
- ์๊ณ ๋ฆฌ์ฆ
- codestates
- python
- ๋ ์ธ ๊ธฐ๋ฆฟ ์๋ฐ์คํฌ๋ฆฝํธ
- ํ๊ณ
- ํ ์ต
- ํ์ ์คํฌ๋ฆฝํธ ์ฌ์ธ์
- ํ์ ์คํฌ๋ฆฝํธ
- LeetCode
- ํ์์ดํ
- ๋ฆฌํธ์ฝ๋
- ๋ฐฑ์ค
- ์ ์ฌ๋จ
- ์์ ์ตํ๋ฉฐ ๋ฐฐ์ฐ๋ ๋คํธ์ํฌ ์ฒซ๊ฑธ์
- ์ ๋ก์ด
- ํ์ด์ฌ
- ์ฝ๋์คํ ์ด์ธ
- programmers
- 2์ฃผ ํ๋ก์ ํธ
- Today
- Total
Jerry
[ํ๋ก๊ทธ๋๋จธ์ค/SQL ๊ณ ๋์ Kit] ๊ฐ๊ฒฉ๋ ๋ณ ์ํ ๊ฐ์ ๊ตฌํ๊ธฐ ๋ณธ๋ฌธ
[ํ๋ก๊ทธ๋๋จธ์ค/SQL ๊ณ ๋์ Kit] ๊ฐ๊ฒฉ๋ ๋ณ ์ํ ๊ฐ์ ๊ตฌํ๊ธฐ
juicyjerry 2023. 11. 9. 11:14๐ช๋ฌธ์
PRODUCT ํ
์ด๋ธ์์ ๋ง์ ๋จ์์ ๊ฐ๊ฒฉ๋ ๋ณ๋ก ์ํ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ SQL ๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ์ปฌ๋ผ๋ช
์ ๊ฐ๊ฐ ์ปฌ๋ผ๋ช
์ PRICE_GROUP, PRODUCTS๋ก ์ง์ ํด์ฃผ์๊ณ ๊ฐ๊ฒฉ๋ ์ ๋ณด๋ ๊ฐ ๊ตฌ๊ฐ์ ์ต์๊ธ์ก(10,000์ ์ด์ ~ 20,000 ๋ฏธ๋ง์ธ ๊ตฌ๊ฐ์ธ ๊ฒฝ์ฐ 10,000)์ผ๋ก ํ์ํด์ฃผ์ธ์. ๊ฒฐ๊ณผ๋ ๊ฐ๊ฒฉ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
๐ช ๋์ ์๋(์ค๋ต)
SET @P = -10000;
SELECT (@P := @P + 10000) AS 'PRICE_GROUP',
(SELECT COUNT(*) FROM PRODUCT WHERE PRICE BETWEEN @P AND @P + 10000) AS 'PRODUCT'
FROM PRODUCT
GROUP BY 1
HAVING @P <= MAX(PRICE)
ORDER BY PRICE_GROUP ASC;
- SET ํค์๋๋ฅผ ํ์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋ ค๊ณ ํ๋๋ฐ ์ ์ ๋๋ค.
> WHERE์ ์์ MAX(PRICE) ๋ก ์๋ํ์ง๋ง, ์ ์ ๋ผ์ ๊ตฌ๊ธ๋ง ํด๋ณด๋ GROUP BY๋ก ๋ฌถ์ด HAVING์ ๋ก ํ๋ ๋ฐฉ๋ฒ๋ ์์ด์ ์๋ํ์ง๋ง, ์ ์ ๋จ
> MAX(PRICE) ๊ฐ ์๊ฐ๋๋ก ๋์ง ์์
๐ช ๋ค๋ฅธ ์ ๋ต
# ์ ๋ต 1
SELECT FLOOR(PRICE / 10000) * 10000 AS `PRICE_GROUP`,
COUNT(*) AS PRODUCTS
FROM PRODUCT
GROUP BY `PRICE_GROUP`
ORDER BY `PRICE_GROUP`;
# ์ ๋ต 2
SELECT CASE WHEN (0 < PRICE) AND (PRICE < 10000) then 0
WHEN (10000 <= PRICE) and (PRICE < 20000) then 10000
WHEN (20000 <= PRICE) and (PRICE < 30000) then 20000
WHEN (30000 <= PRICE) and (PRICE < 40000) then 30000
WHEN (40000 <= PRICE) and (PRICE < 50000) then 40000
WHEN (50000 <= PRICE) and (PRICE < 60000) then 50000
WHEN (60000 <= PRICE) and (PRICE < 70000) then 60000
WHEN (70000 <= PRICE) and (PRICE < 80000) then 70000
WHEN (80000 <= PRICE) and (PRICE < 90000) then 80000
END AS PRICE_GROUP, count(*)
FROM PRODUCT
GROUP
BY PRICE_GROUP
ORDER
BY PRICE_GROUP ASC
# ์ ๋ต 3
SELECT TRUNCATE(PRICE,-4) AS PRICE_GROUP, COUNT(*) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP
๐ช ๋ฐฐ์ด ์
- CASE ํํ์์ ์๊ฒ ๋์๋ค.
- TRUNCATE ํ์ฉ๋ฒ์ ์๊ฒ ๋์๋ค.
๐ช ๋ง์น๋ฉด์
๋ค์์๋ ๋ค๋ฅธ ๋ฌธ์ ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋ค!
์๋ :))