개발하는 자몽

[프로그래머스] GROUP BY > 가격대 별 상품 개수 구하기 본문

SQL

[프로그래머스] GROUP BY > 가격대 별 상품 개수 구하기

jaamong 2024. 2. 16. 19:29

문제

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

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

 

풀이

  • 만원 단위의 가격대 별로 상품 개수 출력
  • 각 컬럼명은 PRICE_GROUP, PRODUCTS
  • 가격대 정보는 각 구간의 최소금액으로 표시
  • 가격대를 기준으로 오름차순 정렬

 

코드 1

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

 

  • `TRUNCATE`를 이용해서 자릿수 버림. 이후 `PRICE_GROUP`으로 별칭 설정
    • `TRUNCATE` 사용 시 반드시 버릴 자릿수를 지정해야 함
  • `PRICE_GROUP`으로 그룹핑하여 가격대 별로 묶음.
  • `COUNT`를 사용하여 상품 개수 계수. 이후 `PRODUCTS`로 별칭 설정
  • 가격대인 `PRICE_GROUP`를 기준으로 오름차순 정렬

 

코드 2

SELECT FLOOR(PRICE/10000)*10000 AS PRICE_GROUP, COUNT(*) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE;
  • `PRICE`를 단위에 맞춰서 나눈 뒤 소수점을 없애기 위해 `FLOOR` 사용. 가격대 정보는 각 구간의 최소 금액으로 나타내어야 하므로 10000 곱함 (몇천 원대인 경우 0이므로 10000을 곱해도 그대로 0)
  • 이후 코드 1 풀이와 동일

 

 

 

Comments