https://school.programmers.co.kr/learn/courses/30/lessons/131530
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
PRODUCT 테이블에서 PRICE 컬럼을 만 원 단위 가격대 별로 상품 개수를 출력하는 SQL문을 작성하라.
컬럼명 지정 필요, 가격대 정보는 각 구간의 최소 금액 기준으로 표시, 가격대 기준으로 오름차순 정렬
코드
-- 풀이 1
SELECT (PRICE DIV 10000) * 10000 PRICE_GROUP,
COUNT(*) PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY 1;
-- 풀이 2
SELECT TRUNCATE(PRICE, -4) PRICE_GROUP, COUNT(*) PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY 1;
풀이
풀이 1은 가격대를 구할 때 10000으로 나눈 몫을 구하고, 그 값에 10000을 곱하는 방법을 사용한다.
풀이 2는 버림 함수인 TRUNCATE(변수, n)을 사용하는데, 두 번째 인자에 양수 값을 넣으면 해당 소수점 자리 수까지만 남기고 버리고 음수 값을 넣으면 소수점이 아닌 해당 값의 뒤에서 n번째까지 버림을 의미한다.
아래 예시를 통해 쉽게 이해할 수 있다.
TRUNCATE(1234.56789, 1) -> 1234.5
TRUNCATE(1234.56789, 4) -> 1234.5678
TRUNCATE(1234.56789, -1) -> 1230
TRUNCATE(1234.56789, -2) -> 1200
나머지 과정은 그룹화를 하고, 집계함수 COUNT를 사용하면 쉽게 풀 수 있다. SQL 쿼리문의 실행 순서는 위 예시 쿼리에서 FROM -> GROUP BY -> SELECT -> ORDER BY이지만, GROUP BY에서 SELECT 절에 사용한 별칭을 사용할 수 있으므로 위와 같이 사용해도 된다.
'SQL > Coding Test' 카테고리의 다른 글
[프로그래머스] 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2024.03.21 |
---|---|
[프로그래머스] 조건에 맞는 개발자 찾기 (0) | 2024.03.20 |
[프로그래머스] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2024.03.20 |
[프로그래머스] 년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2024.03.15 |
[프로그래머스] 물고기 종류 별 대어 찾기 (0) | 2024.03.15 |