SQL

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

랩실외톨이 2023. 1. 12. 02:55
반응형

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

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으로 단위별로 그룹화 해줬다.

그리고 문제에서 원하는 대로 정렬해 줬다.

 

 

 

 

반응형