WITH절은 CTE를 표현하기 위한 구문입니다.
비재귀적 CTE는 말 그대로 재귀적이지 않은 CTE입니다.
WITH CTE_테이블이름(열 이름)
AS
(
<쿼리문>
)
SELECT 열 이름 FROM CTE_테이블이름 ;
USe sqldb;
SELECT userID'사용자', SUM(price*amount)'총구매액' FROM buyTbl GROUP BY userID;
SELECT * FROM abc ORDER BY 총구매액 DESC
아직 이해가 잘 가질 않습니다. 다른 예로 하나 더 연습해보자.
회원테이블(userTbl)에서 각 지역별로 가장 큰 키를 1명씩 뽑은 후에, 그사람들 키의 평균을 내보자. (만약, 전체의 평균이라면 AVG(height)만 사용하면 되지만, 각 지역별로 가장 큰 키의 1명을 우선 뽑아야 하므로 이야기가 복잡해집니다.) 이럴 때 CTE를 유용하게 사용할 수 있습니다.
SELECT addr, MAX(height) FROM userTbl GROUP By addr
WITH CTE_userTbl(addr, maxHeight)
AS
(SELECT addr, MAX(height) FROM userTbl GROUP BY addr)
SELECT AVG(키) FROM CTE_테이블이름
WITH CTE_userTbl(addr, maxHeight)
AS
(SELECT addr, MAX(height) FROM userTbl GROUP BY addr)
SELECT AVG(maxHeight*1.0) AS '각 지역별 최고키의 평균' FROM cte_userTbl;