티스토리 뷰

Lv2. 가격대 별 상품 개수 구하기

문제

- 만원 단위의 가격대별로 상품 개수 출력 => 몫 구하기 위해 FLOOR()이용, 개수 구하기 위해 COUNT(*) 이용, GROUP BY 후 COUNT 사용

- 가격대 정보는 각 구간의 최소금액  => FLOOR() * 10000

- 가격대 기준으로 오름차순 정렬 => ORDER BY

 

풀이1 : FLOOR 이용

* AS는 SELECT문에만 사용가능하다

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

- 처음에 MIN 이용해서 최소금액 구하는 건줄 알았는데 그게 아니라, 10000원대 금액이면 10000원, 20000대면 20000원 이렇게 출력되야 하는 거였음! 그래서 FLOOR() 함수 이용한 거에 10000을 곱해주는 방향으로 문제풀이함!

- 다른 사람들 풀이보면 TRUNCATE 사용한 사람도 있고, CASE WHEN문 이용한 사람도 있는데 이렇게 푸는게 훨씬 더 직관적인듯!

 

풀이2 : 나머지 빼주기

* 다른 사람 풀이인데 이것도 깔끔해서!

* 처음에 금액에서 나머지를 빼준 걸로 PRICE_GROUP을 묶었고, 그걸로 GROUP BY 와 ORDER BY 문 사용!

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