노력에는 지름길이 없으니까요

프로그래머스 - 가격대 별 상품 개수 구하기 본문

SQL/프로그래머스

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

데건 2024. 7. 10. 19:21
728x90

 

해결일 언어 레벨 테스트명
20240710 SQL level 3  가격대 별 상품 개수 구하기

 

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

 

 


 

내 코드

처음 쓴 코드... 

SELECT
    if(PRICE<10000,0,CEIL(PRICE/10000)*10000) PRICE_GROUP
    ,COUNT(PRICE) PRODUCTS
FROM PRODUCT
GROUP BY 1
ORDER BY 1

10000이 없다... 그럴 수가 있나

그리고 결과...

형식적으로는 문제가 없는 듯 보였는데, 틀렸다고 하니 내부 데이터를 좀 살펴보기로 했다.

 

뭔가가 잘못되었음을 느끼다

 

CEIL : 올림

ROUND : 반올림

TRUNCATE : 버림

 

SELECT
    TRUNCATE(PRICE/10000,0)*10000 PRICE_GROUP
    ,COUNT(PRICE) PRODUCTS
FROM PRODUCT
GROUP BY 1
ORDER BY 1

 

TRUNCATE를 쓰니까 정답... 주의하자.

 

 

개선점:

 

참고 코드

SELECT case when f<1 then '0'
            when f>=1 then f*10000
            else NULL end PRICE_GROUP,
            COUNT(*) PRODUCTS
FROM
(
SELECT FLOOR(PRICE/10000) f
FROM PRODUCT
) a
GROUP BY 1
ORDER BY 1 asc

 

 

 

728x90
반응형