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
반응형
'Algorithm > 코딩테스트 (SQL)' 카테고리의 다른 글
[프로그래머스][JOIN] 없어진 기록 찾기 (MySQL) (1) | 2023.12.01 |
---|---|
[프로그래머스][GROUP BY] 고양이와 개는 몇 마리 있을까(MySQL) (0) | 2023.11.29 |
[프로그래머스][String,Date] 이름에 el이 들어가는 동물 찾기(My SQL) (0) | 2023.11.20 |
[프로그래머스][SELECT] 재구매가 일어난 상품과 회원 리스트 구하기(MySQL) (0) | 2023.11.13 |
[프로그래머스][SELECT] 12세 이하인 여자 환자 목록 출력하기(MySQL) (0) | 2023.11.11 |
댓글