https://school.programmers.co.kr/learn/courses/30/lessons/131530
가격대를 기준으로 해당되는 상품의 수를 구해야한다.
0원 이상 ~ 10000원 미만
10000원 이상 ~ 20000원 미만
등 만의 자리를 기준으로 나눠야한다.
FLOOR() 를 사용하면 되겠지만 FLOOR() 는 소수점을 버리는 함수이지
특정 자리수에서 내림을 하는 함수가 아니므로 그냥 사용해서는 답을 구할 수 없다.
조금 더 머리를 굴려서
먼저 가격을 10000으로 나눠보자.
9000원 / 10000 = 0.9
15000원 / 10000 = 1.5
37000원 / 10000 = 3.7
40000원 / 10000 = 4
그리고 이때 FLOOR()를 사용해보자.
FLOOR(9000원 / 10000) = FLOOR(0.9) = 0
FLOOR(15000원 / 10000) = FLOOR(1.5) = 1
FLOOR(37000원 / 10000) = FLOOR(3.7) = 3
FLOOR(40000원 / 10000) = FLOOR(4) = 4
10000의 자리수를 구했다.
여기다가 다시 10000을 곱하면 0, 10000, 30000, 40000 등으로
우리가 표현하고 싶은 PRICE_GROUP 컬럼의 값이 된다.
위 과정을 거쳐 계산 후 GROUP BY 를 PRICE_GROUP 에 적용하면 될 것이다.
SELECT
FLOOR(PRICE / 10000) * 10000 AS PRICE_GROUP
, COUNT(*) AS PRODUCTS
FROM
PRODUCT
GROUP BY
PRICE_GROUP
ORDER BY
PRICE_GROUP
더 좋은 해결방법이 있다면 언제든 댓글로 알려주세요 🤗