with 테이블명 as (select ... )
CTE(Common Table Expression)
- 서브쿼리로 쓰이는 파생테이블과 비슷한 개념
- 권한이 필요없고 하나의 쿼리문이 끝날 때까지만 지속되는 일회성 테이블
- 복잡한 쿼리문에서 코드의 가독성과 재사용성을 위해 파생테이블 대신 사용
- 재귀적 CTE, 비재귀적 CTE
WITH hourly_bike(year, hour, count) AS(
SELECT EXTRACT(YEAR FROM datetime),
EXTRACT(HOUR FROM datetime), count FROM bike),
monthly_bike(year, month, count) AS(
SELECT EXTRACT(YEAR FROM datetime),
EXTRACT(MONTH FROM datetime), count FROM bike)
SELECT * FROM monthly_bike LIMIT 5;