https://school.programmers.co.kr/learn/courses/30/lessons/131530
1. 서론
이런 식으로 자유자재로 답을 구할 수 있구나를 깨달은 문제. 근데 실전에서 저게 생각이 나려나...
2. 문제 풀이
PRODUCT: 의류 쇼핑몰에서 판매 중인 상품들의 상품 정보를 담은 테이블
테이블 구조:
PRODUCT_ID, PRODUCT_CODE, PRICE
(각각 상품 ID, 상품코드, 판매가)
Q. PRODUCT 테이블에서 만원 단위의 가격대 별로 상품 개수를 출력하는 SQL 문을 작성해 주세요. 이때 칼럼명은 각각 칼럼명은 PRICE_GROUP, PRODUCTS로 지정해 주시고 가격대 정보는 각 구간의 최소금액(10,000원 이상 ~ 20,000 미만인 구간인 경우 10,000)으로 표시해 주세요. 결과는 가격대를 기준으로 오름차순 정렬해 주세요.
포인트
1. 만원 단위 가격대 & 상품 개수 (단, 10000원 이상 ~ 20000 미만인 경우 => 10000)
2. 만원 '단위'의 가격대별 상품 개수 => 만원 단위의 그룹화가 이루어져야 한다.
만원 단위의 그룹화를 어떻게 해야 하는지 몰라서 좀 찾아봤다.
처음엔 그냥 price % 10000인가 싶었는데 그럼 나머지 값이 일의 자리 수만 남기 때문에 그건 답이 아니다.
price - price % 10000 => 원래의 가격에서 만원 대 및의 값들을 빼줌으로써 만원 단위로만 남게 된다.
그래서 이 값에 별칭을 주고 그룹화를 하고 count()를 통해 이 물건이 몇 개 인지를 세어준다.
3. 코드 설명
select (price - price % 10000) as price_group, count(*) as products
from product
group by price_group
order by price_group
계산을 통해 만원 단위로의 값을 구하고, 그걸 세어서 상품 개수를 구했다.
그리고 이를 위해 price_group으로 단위별로 그룹화 해줬다.
그리고 문제에서 원하는 대로 정렬해 줬다.
'SQL' 카테고리의 다른 글
[MySQL] 프로그래머스 카테고리 별 도서 판매량 집계하기(+Oracle) (0) | 2023.01.17 |
---|---|
[MySQL] 프로그래머스 카테고리 별 상품 개수 구하기 (0) | 2023.01.13 |
[MySQL] 프로그래머스 상품 별 오프라인 매출 구하기 (1) | 2023.01.12 |
[MySQL] 프로그래머스 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2023.01.12 |
[SQLD] SQLD 요약본 아카이브 (0) | 2021.07.02 |