[SQL 코드카타] 가격대 별 상품 개수 구하기(MySQL)

2024. 9. 24. 22:12[Node.js_6기 본캠프 TIL]

https://school.programmers.co.kr/learn/courses/30/lessons/131530

 

PRODUCT 테이블에서 만원 단위로 구간을 나눠, 상품 개수를 출력해야 하는 문제이다. 답안 예시를 보면 만원 단위로 절삭하여 그루핑을 한 것을 알 수 있다.

 

예를 들어, 9000원은 PRICE_GROUP 0에 해당하고 22000원은 PRICE_GROUP 20000에 해당되게 해야 하는 것이다.

 

BETWEEN으로 구간 별 분리를 해야하나? 그러면 모든 경우의 수를 다 지정해주어야 하는데, 그게 맞는 방법일까? 100만원짜리 상품이 있으면 어떻게 하지?

 

아무리 생각해도 만원 단위로 뒷자리를 절삭해주는 등의 방법이 있을 것 같았다. 그리고 정말 TRUNCATE( 테이블 명, - 절삭하려는 자릿수) 라는 간편한 방법이 있었다.

 

본 문제에서 4번째 자릿수까지 절삭해야 하기 때문에, TRUNCATE( PRICE, - 4) 를 사용하고 GROUP BY 로 묶어주면 간편하게 분류할 수 있었다.

 

 

정답 코드

SELECT TRUNCATE(PRICE, -4) AS PRICE_GROUP, COUNT(*) AS PRODUCTS FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP