💡문제 풀이/프로그래머스 - Oracle

가격대 별 상품 개수 구하기 / 131530

뇌 리셋은 기본이지 2023. 11. 3. 00:18

정보

Lv.2

분류 : GROUP BY

 

문제

문제링크

 

풀이

SELECT FLOOR(PRICE / 10000) * 10000 AS PRICE_GROUP
     , COUNT(*) AS PRODUCTS
  FROM PRODUCT
 GROUP BY FLOOR(PRICE / 10000) * 10000
 ORDER BY PRICE_GROUP;

 

풀이 후기

문제 보자마자 제일 생각났던게 CASE WHEN THEN 방법이였다.

하지만 코드도 길어지고 제대로 풀리지도 않는 느낌이여서 다른 분들이 푼 문제를 참고했다.

 

만약 PRICE가 21000이라고 하면 나누기 10000을 해서 한 값(2.1)을 FLOOR 함수로 소수점을 내림해버린다.

그럼 값은 2가 된다.

2를 다시 10000을 곱셈하면 20000 이라는 값이 PRICE_GROUP이라는 별칭으로 출력된다.

 

COUNT를 통해 PRICE_GROUP의 행 수를 구한다.

그룹을 지을 기준은 PRICE_GROUP.

 

GROUP BY는 SELECT 보다 빨리 실행되기 때문에 별칭을 적으면 오류가 발생한다.