RENTAL 테이블을 이용하여 연, 연월, 연월일, 전체 각각의 기준으로 RENTAL_ID 기준 렌탈이 일어난 횟수를 출력하라. (전체 데이터 기준으로 모든행을 출력)


# 풀이 순서
- TO_CHAR() 를 사용하여 RENTAL_DATE 를 전체, 연도, 연월, 연월일 기준으로 구분한다.
- GROUP BY 와 ROLLUP, COUNT() 를 사용하여 각 단위(?)별로 집계한다.
- 큰 단위부터 (상위 그룹부터) GROUP BY 로 묶어줘야한다.
# 문제 풀이
1. COUNT(RENTAL_DATE) 를 사용하여 전체 건수를 조회한다.
SELECT COUNT(RENTAL_ID)
FROM RANTAL
COUNT()
2. TO_CHAR() 와 GROUP BY 를 사용하여 연도 별 합계부터 조회한다.
SELECT TO_CHAR(rental_date, 'YYYY') AS Y
, COUNT(rental_id)
FROM RENTAL
GROUP BY
TO_CHAR(rental_date, 'YYYY')
TO_CHAR()
GROUP BY
3. 동일한 방법으로 월과 일 또한 구분해주면 된다.
SELECT TO_CHAR(RENTAL_DATE, 'YYYY') AS YYYY
, TO_CHAR(RENTAL_DATE, 'MM') AS MM
, TO_CHAR(RENTAL_DATE, 'DD') AS DD
, COUNT(RENTAL_ID)
FROM RENTAL R
GROUP BY
TO_CHAR(RENTAL_DATE, 'YYYY')
,TO_CHAR(RENTAL_DATE, 'MM')
,TO_CHAR(RENTAL_DATE, 'DD')
ORDER BY YYYY, MM, DD
- 단, GROUP BY 만 사용한 경우에는 가장 마지막인, 일 기준으로만 COUNT 가 된다.
- 연 / 월 단위 별 COUNT 를 구하기 위해서는 ROLLUP 을 사용해줘야 한다.
ROLLUP
4. GROUP BY 절에서 ROLLUP 사용하여 각 단위(상위 그룹)별로도 집계하기
SELECT TO_CHAR(RENTAL_DATE, 'YYYY') AS YYYY
, TO_CHAR(RENTAL_DATE, 'MM') AS MM
, TO_CHAR(RENTAL_DATE, 'DD') AS DD
, COUNT(RENTAL_ID)
FROM RENTAL R
GROUP BY
ROLLUP (TO_CHAR(RENTAL_DATE, 'YYYY')
,TO_CHAR(RENTAL_DATE, 'MM')
,TO_CHAR(RENTAL_DATE, 'DD')
)
댓글