문제
https://school.programmers.co.kr/learn/courses/30/lessons/131530
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
만원 단위의 가격대 별로 상품 개수를 출력하기 위해선
상품 가격 PRICE를 10000으로 나눈 몫에서 다시 10000을 곱한 값으로 GROUPBY하면 된다고 생각했다.
SELECT PRICE DIV 10000 * 10000 AS PRICE_GROUP, COUNT(*) AS PRODUCTS FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP
물론 맞았다 하지만 뭔가 찝찝해서 다른 풀이 방법도 찾아보았는데 대부분 TRUNCATE함수를 사용하는 것을 알았다.
다른 풀이
SELECT TRUNCATE(PRICE, -4) AS PRICE_GROUP, COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP
TRUNCATE() - 버림함수
TRUNCATE(숫자, 버림 할 자리수) 의 형태로 사용한다.
예를 들어 TRUNCATE(43200,-4) 를 한다면 4가 리턴되는 것이다.
또 TRUNCATE(3000,-4) 를 한다면 0이 리턴되므로 해당 문제의 의도에 맞게 사용할 수 있다.
반대로 반올림을 위한 함수도 미리 알아놓자면
ROUND() - 반올림 함수
ROUND(숫자, 반올림 할 자리수) 의 형태로 사용한다.
'Database > MySQL' 카테고리의 다른 글
[Programmers/MySQL]대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (2) | 2023.02.16 |
---|---|
[MySQL] NULL 처리 (0) | 2023.02.14 |
[Programmers/MySQL] 데이터가 없는 날짜/시간은 0으로 처리하기 (0) | 2023.02.10 |
[Programmers/MySQL] HAVING, 날짜 관련 함수에 대해 (0) | 2023.02.10 |
[Programmers/MySQL] UNION ALL에 대해 (0) | 2023.02.09 |