[알고리즘] 가격대 별 상품 개수 구하기

2023. 10. 3. 11:55알고리즘 풀이/SQL

문제 설명
다음은 어느 의류 쇼핑몰에서 판매중인 상품들의 정보를 담은 PRODUCT 테이블입니다. PRODUCT 테이블은 아래와 같은 구조로 되어있으며, PRODUCT_ID, PRODUCT_CODE, PRICE는 각각 상품 ID, 상품코드, 판매가를 나타냅니다.

Column name	Type	Nullable
PRODUCT_ID	INTEGER	FALSE
PRODUCT_CODE	VARCHAR(8)	FALSE
PRICE	INTEGER	FALSE
상품 별로 중복되지 않는 8자리 상품코드 값을 가지며 앞 2자리는 카테고리 코드를 나타냅니다.

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

예시
예를 들어 PRODUCT 테이블이 다음과 같다면

PRODUCT_ID	PRODUCT_CODE	PRICE
1	A1000011	10000
2	A1000045	9000
3	C3000002	22000
4	C3000006	15000
5	C3000010	30000
6	K1000023	17000
만원 단위의 가격대 별로 상품을 나누면

가격대가 0원 ~ 1만원 미만인 상품은 PRODUCT_ID 가 2인 상품 1개,
가격대가 1만원 이상 ~ 2만원 미만인 상품들은 PRODUCT_ID 가 1, 4, 6인 상품 3개,
가격대가 2만원 이상 ~ 3만원 미만인 상품은 PRODUCT_ID 가 3인 상품 1개,
가격대가 3만원 이상 ~ 4만원 미만인 상품은 PRODUCT_ID 가 5인 상품 1개,
에 각각 해당하므로 다음과 같이 결과가 나와야 합니다.

PRICE_GROUP	PRODUCTS
0	1
10000	3
20000	1
30000	1

나의 풀이

- floor를 알면 되는 문제

select floor(price / 10000) * 10000 as price_group, count(*) as products from product 
group by floor(price / 10000)
order by price_group

- select에서 만든 별칭을 group by에서도 사용할 수 있다.

select floor(price / 10000) * 10000 as price_group, count(*) as products from product 
group by price_group
order by price_group

- alias(별칭)는 select와 from에만 선언할 수 있다.

- where에서는 사용이 안된다.

- group by나 order by에서는 사용 가능하다.

 

Reference


https://kkw-da.tistory.com/entry/SQL-%EA%B0%80%EA%B2%A9%EB%8C%80-%EB%B3%84-%EC%83%81%ED%92%88-%EA%B0%9C%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4MySQLLevel-2

 

[SQL] 가격대 별 상품 개수 구하기(프로그래머스/MySQL/Level 2)

안녕하세요! 데코입니다! 오늘은 프로그래머스 코딩테스트 연습에 있는 "가격대 별 상품 개수 구하기" 문제를 포스팅하려고 합니다! 바로 포스팅 시작할게요! :) (출처 : https://school.programmers.co.kr/

kkw-da.tistory.com

https://wnwa.tistory.com/12

 

[MYSQL] 별칭(ALIAS)이란? feat.주의사항

별칭(ALIAS)은 칼럼, 테이블, 서브 쿼리, where절 등에 내가 원하는 이름(별칭)을 붙여주는 것으로 접근이 쉬워집니다. 예약어는 AS 1. 칼럼(column)에 별칭 사용하기 -- mem_id, addr 두 가지 칼럼(열)의 이

wnwa.tistory.com