PRODUCT 테이블에서
만원 단위의 가격대 별로
상품 개수를 출력하는 SQL 문을 작성해주세요.
이때 컬럼명은 각각 컬럼명은 PRICE_GROUP, PRODUCTS로 지정해주시고
가격대 정보는 각 구간의 최소금액(10,000원 이상 ~ 20,000 미만인 구간인 경우 10,000)으로 표시해주세요.
결과는 가격대를 기준으로 오름차순 정렬해주세요.
WITH FLOOR_PRODUCT AS(
SELECT PRODUCT_ID, PRODUCT_CODE, (CASE WHEN PRICE BETWEEN 10000 AND 19999 THEN 10000
WHEN PRICE BETWEEN 20000 AND 29999 THEN 20000
WHEN PRICE BETWEEN 30000 AND 39999 THEN 30000
WHEN PRICE BETWEEN 40000 AND 49999 THEN 40000
WHEN PRICE BETWEEN 50000 AND 59999 THEN 50000
WHEN PRICE BETWEEN 60000 AND 69999 THEN 60000
WHEN PRICE BETWEEN 70000 AND 79999 THEN 70000
WHEN PRICE BETWEEN 80000 AND 89999 THEN 80000
WHEN PRICE BETWEEN 90000 AND 99999 THEN 90000 END) AS PRICE
FROM PRODUCT
)
SELECT PRICE AS PRICE_GROUP, COUNT(*) AS PRODUCTS
FROM FLOOR_PRODUCT
GROUP BY PRICE
ORDER BY PRICE
풀면서 좀 이게 맞나 생각이 들었던 문제였다.
처음에는 FLOOR() 함수로 버림을 해보려고 했는데, 먹히지 않길래 안 되는 방식인 줄 알았다.
나중에 보니 사람들은 일부러 10000으로 나누어서 소수점까지 내리고, FLOOR()로 버림을 한 뒤 다시 10000을 곱하는 방식을 쓰거나,
TRUNCATE(PRICE, -4)로 천의 자리까지 버리는 방법을 썼다.
좋은 기능을 배울 수 있었다..