가격대 별 상품 개수 구하기

수이·2025년 3월 12일
0

🟢 코드카타 / SQL

목록 보기
44/84
post-thumbnail

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

조건정리
1. 만원 단위 가격대 별로 나누기

  • 1만원 이상~ 2만원 미만 : 10000으로 표기
  1. 상품 개수 출력
  2. 각각 PRICE_GROUP PRODUCTS 지정
  3. 가격대 기준 오름차순 정렬

풀이

  1. CASE WHEN으로 나눠야겠다고 생각함 + 컬럼명지정
    근데 쓰면서 뭔가 잘못 됐다고 느꼈음
    왜냐면 이거 가격대가 높으면 높을 수록 이렇게 일일이 쓰는 게 말이 안 됨.. 🫤 이런 비효율적인 방법을 누가 씀 ㅎ 내가 씀 ㅎ
SELECT CASE WHEN PRICE BETWEEN 0 AND 9999 THEN 0
            WHEN PRICE BETWEEN 10000 AND 19999 THEN 10000
            WHEN PRICE BETWEEN 20000 AND 29999 THEN 20000
            WHEN PRICE BETWEEN 30000 AND 39999 THEN 30000
            WHEN PRICE BETWEEN 40000 AND 49999 THEN 40000
            WHEN PRICE BETWEEN 50000 AND 59999 THEN 50000
            WHEN PRICE BETWEEN 60000 AND 69999 THEN 60000
            WHEN PRICE BETWEEN 70000 AND 79999 THEN 70000
            WHEN PRICE BETWEEN 80000 AND 89999 THEN 80000
            END AS PRICE_GROUP
FROM PRODUCT
  1. 개수 세기 + 컬럼명지정 + 자연스레 그룹화
    왜냐면 집계함수는 GROUP BY랑 같이 쓰니까!
SELECT CASE WHEN PRICE BETWEEN 0 AND 9999 THEN 0
            WHEN PRICE BETWEEN 10000 AND 19999 THEN 10000
            WHEN PRICE BETWEEN 20000 AND 29999 THEN 20000
            WHEN PRICE BETWEEN 30000 AND 39999 THEN 30000
            WHEN PRICE BETWEEN 40000 AND 49999 THEN 40000
            WHEN PRICE BETWEEN 50000 AND 59999 THEN 50000
            WHEN PRICE BETWEEN 60000 AND 69999 THEN 60000
            WHEN PRICE BETWEEN 70000 AND 79999 THEN 70000
            WHEN PRICE BETWEEN 80000 AND 89999 THEN 80000
            END AS PRICE_GROUP,
       COUNT(1) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
  1. 정렬해주면 끝
SELECT CASE WHEN PRICE BETWEEN 0 AND 9999 THEN 0
            WHEN PRICE BETWEEN 10000 AND 19999 THEN 10000
            WHEN PRICE BETWEEN 20000 AND 29999 THEN 20000
            WHEN PRICE BETWEEN 30000 AND 39999 THEN 30000
            WHEN PRICE BETWEEN 40000 AND 49999 THEN 40000
            WHEN PRICE BETWEEN 50000 AND 59999 THEN 50000
            WHEN PRICE BETWEEN 60000 AND 69999 THEN 60000
            WHEN PRICE BETWEEN 70000 AND 79999 THEN 70000
            WHEN PRICE BETWEEN 80000 AND 89999 THEN 80000
            END AS PRICE_GROUP,
       COUNT(1) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP

이건 필히 쉬운 방법이 있을 것 같아서 찾아봤다

다른사람 풀이

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

허거덩.. 너무 간단하고 좋다

PRICE / 10000 10000
ex) 가격이 30,000원일 경우
30000 / 10000
100000 = > 30000으로 표시

FLOOR

🔗 라이브세션 7회차 - MATH 함수

  • 소수점 이하를 버리고 가장 가까운 정수를 반환

2개의 댓글

comment-user-thumbnail
2025년 3월 12일

헤 저도 수희님이랑 존똑으로 풀었서요 동지동지

1개의 답글

관련 채용 정보