본문 바로가기
Algorithm/코딩테스트 (SQL)

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

by 싱브이 2023. 11. 24.
728x90
반응형

문제

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

 

 

 

 

내 생각

1. 만원 단위의 가격대 별로 상품 개수를 출력 : COUNT(PRODUCT_ID)

2. 가격대 정보는 각 구간의 최소금액(10,000원 이상 ~ 20,000 미만인 구간인 경우 10,000)으로 표시 : TRUNCATE(PRICE, -4) 
    → PRICE를 뒤에서부터 4개 삭제 

3. 각각 컬럼명은 PRICE_GROUP, PRODUCTS로 지정 : AS

4. 가격대를 기준으로 오름차순 정렬 

 

 

 

 

내 코드

1. 

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

 

2. 다른 사람 풀이긴 한데 굳이 이렇게 안해도 될 듯 싶다! (CASE WHEN을 알게 되어서 적었을 뿐!)

SELECT (
    CASE
        WHEN PRICE < 10000 THEN 0
        ELSE TRUNCATE(PRICE, -4) 
        END) AS PRICE_GROUP, COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP

 

 

 

 

 

** TRUNCATE (숫자, 버릴 자릿수)

: 숫자를 '버릴 자릿수' 아래로 버린다. 즉, 내림한다 ! (반드시 버릴 자릿수를 명시할 것)

 

 

** CASE WHEN

CASE
	WHEN 조건
	THEN '반환 값'
	ELSE 'WHEN 조건에 해당 안되는 경우 반환 값'
END

WHEN과 THEN은 한쌍 ! 그리고 여러 번 사용할 수 있다 !

그리고 ELSE가 없고, 반환 값이 없으면 NULL을 반환한다. 

728x90
반응형

댓글