[프로그래머스][SQL] ⭐ 가격대 별 상품 개수 구하기

Eunding·2024년 2월 21일
0

SQL 고득점 Kit

목록 보기
38/62

가격대 별 상품 개수 구하기

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

문제

PRODUCT 테이블에서 만원 단위의 가격대 별로 상품 개수를 출력하는 SQL 문을 작성해주세요. 이때 컬럼명은 각각 컬럼명은 PRICE_GROUP, PRODUCTS로 지정해주시고 가격대 정보는 각 구간의 최소금액(10,000원 이상 ~ 20,000 미만인 구간인 경우 10,000)으로 표시해주세요. 결과는 가격대를 기준으로 오름차순 정렬해주세요.

예시

풀이

SELECT (CASE
            WHEN PRICE < 10000 THEN 0
            ELSE TRUNCATE(PRICE, -4)
       END) AS PRICE_GROUP, COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP
  1. CASE문 이용해서 10000원 미만이면 0, 이상이면 정수 4자리 버리고 만 단위로 PRICE_GROUP 이용
  2. COUNT() 함수로 가격대별 상품 개수 세기
  3. PRICE_GROUP으로 그룹화
  4. PRICE_GROUP으로 정렬

TRUNCATE라는 새로운 문법을 알게 됐다! 나중에 다시 한 번 풀어봐야겠다.

참고 블로그

배운 점

TRUNCATE

TRUNCATE(number, decimals)
  • number: 버림할 숫자
  • decimals: 숫자의 소수점 이하 자릿수 (음수인 경우, 소수점 이하의 자릿수를 왼쪽(정수)에서부터 제거)

=> 문제에서 TRUNCATE(PRICE, -4)는 PRICE의 값을 정수 네자리를 일의 자리부터 버린 후, 숫자를 반환
ex) PRICE = 12345의 경우, TRUNCATE(PRICE, -4)는 10000
ex) PRICE = 123456.789의 경우, TRUNCATE(PRICE, -4)는 120000
ex) PRICE = 123456.789의 경우, TRUNCATE(PRICE, -3)은 123000
ex) PRICE = 123456.789의 경우, TRUNCATE(PRICE, 3)은 123456

쉽게 말하면 decimals이 양수면 소수점 버림, 음수면 정수 버림하면 된다.

profile
안녕하세요~

0개의 댓글

관련 채용 정보