โ๏ธ ๋ฌธ์ ์ค๋ช
PRODUCT ํ ์ด๋ธ์์ ๋ง์ ๋จ์์ ๊ฐ๊ฒฉ๋ ๋ณ๋ก ์ํ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ SQL ๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ์ปฌ๋ผ๋ช ์ ๊ฐ๊ฐ ์ปฌ๋ผ๋ช ์ PRICE_GROUP, PRODUCTS๋ก ์ง์ ํด์ฃผ์๊ณ ๊ฐ๊ฒฉ๋ ์ ๋ณด๋ ๊ฐ ๊ตฌ๊ฐ์ ์ต์๊ธ์ก(10,000์ ์ด์ ~ 20,000 ๋ฏธ๋ง์ธ ๊ตฌ๊ฐ์ธ ๊ฒฝ์ฐ 10,000)์ผ๋ก ํ์ํด์ฃผ์ธ์. ๊ฒฐ๊ณผ๋ ๊ฐ๊ฒฉ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
https://school.programmers.co.kr/learn/courses/30/lessons/131530
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
โ๏ธ ๋ฌธ์ ํด์
1. PRODUCT์ ๊ฐ๊ฒฉ๋๋ฅผ ๋ง์๋๋ณ๋ก ๋ณํ
2. ๊ฐ๊ฒฉ๋๋ณ๋ก ์ํ ๊ฐ์๋ฅผ ์ถ๋ ฅ
3. ๊ฒฐ๊ณผ๋ ๊ฐ๊ฒฉ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
โ๏ธ ์์ฑ ์ฝ๋
SELECT PRICE_GROUP, COUNT(PRICE_GROUP) PRODUCTS
FROM (
SELECT FLOOR(PRICE/10000)*10000 PRICE_GROUP
FROM PRODUCT
) AS PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP
โ๏ธ ์ฝ๋ ํ์ด
1. PRODUCT์ ๊ฐ๊ฒฉ๋๋ฅผ ๋ง์๋๋ณ๋ก ๋ณํ
FROM (
SELECT FLOOR(PRICE/10000)*10000 PRICE_GROUP
FROM PRODUCT
) AS PRODUCT
GROUP BY PRICE_GROUP
10,000์ผ๋ก ๋๋ ๊ฐ์ FLOOR()๋ก ์์์ ์ดํ๋ฅผ ๋ฒ๋ฆฌ๋ฉด, ๋ง์๋์ ์์๋ฆฌ๋ง(?) ์ถ์ถ์ด๊ฐ๋ฅํ๋ค.
์ฌ๊ธฐ์ 10000์ ๊ณฑํ๋ฉด ๋ง์๋๋ณ๋ก ๋ฐ์ดํฐ๋ก ๋ณํ๋๋ค.
FROM์์ ๋ณํ๋ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ ธ์ค๋ฉด GROUP BY๋ก ๋ง์๋ ๋ณ๋ก ๋ฌถ์ ์ ์๋ค.
2. ๊ฐ๊ฒฉ๋๋ณ๋ก ์ํ ๊ฐ์๋ฅผ ์ถ๋ ฅ
SELECT PRICE_GROUP, COUNT(PRICE_GROUP) PRODUCTS
COUNT()๋ฅผ ํ์ฉํด ๊ทธ๋ฃนํ๋ ๋ฐ์ดํฐ ๊ฐ์๋ฅผ ๊ตฌํ๋ค.
3. ๊ฒฐ๊ณผ๋ ๊ฐ๊ฒฉ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
ORDER BY PRICE_GROUP