TIL(Today I Learned)

TIL - SQL 문제에서 가격 구간 구하는 데에 어려움을 겪음

Happy._. 2024. 4. 15. 22:30

Q 어떤 문제가 있었는지

프로그래머스에서 SQL 문제를 푸는 중 가격 구간 별 처리를 어떻게 해야 할지 몰라서 문제를 해결하지 못했다.

 

Q 내가 시도해본 것들

아래 코드와 같이 케이스별로 출력값을 정하려고 했으나 가격의 구간이 정확히 정해진 것이 아니라 지정한 범위 값은 모두 빈 값으로 처리 되었다.

CASE외 다른 대안이 떠오르지 않아서 시도하지 못했다.

CASE
    price < 10000 then 0
    price < 20000 then 10000
    price < 30000 then 20000
    price < 40000 then 30000
    price < 30000 then 40000
END


Q 어떻게 해결했는지

되도록 스스로 해결하려고 했지만 문제가 도저히 풀리지 않아서 해당 문제 페이지의 질문하기에 공유된 정답을 보고 여러가지 풀이 방식이 있다는 걸 알았다.

그 중 심플한 정답은 아래와 같다.

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

-- 1. price를 10000으로 나눠 소수점 이하를 버린다.
--    price가 19000이라면 19000/10000은 1이 된다.
-- 2. 다시 10000을 곱해서 10000원 단위로 그룹화한다.


Q 무엇을 새롭게 알았는지

단순 조회나 문자열 조작, JOIN만 하다보니 아는 함수가 적어서 여러가지 방법으로 문제를 해결하지 못하는 수준이라는 것을 알았다.

여러가지 문제들을 접하면서 사용해보지 않았던 함수들 사용해보면서 문제해결 능력을 더 키워야겠다.