2025.02.24 - [프로그래밍/SQL, Hive, SAS 관련 정보] - [SQL] Table of Contents
Sub query에 alias를 가할 수 있는데요, 이 때 이 scope에 대해서 주의해야할 점이 있습니다.
- 파생 테이블(서브쿼리의 FROM 절에 정의된 별칭)은 해당 쿼리 블록 내에서만 유효합니다.
- 외부 쿼리에서 정의한 별칭을 내부 서브쿼리에서 그대로 사용할 수 없으므로, 내부에서 재참조하면 오류가 발생합니다.
- 서브쿼리는 독립된 쿼리 블록으로 간주되며, 별도로 평가됩니다.
SELECT user_id
FROM (
SELECT user_id, COUNT(*) AS cnt
FROM MovieRating
GROUP BY user_id
) t
WHERE cnt = (SELECT MAX(t.cnt) FROM t); -- ❌ 오류 발생: t는 이 서브쿼리 내에서 정의되지 않음
서브쿼리 (SELECT MAX(t.cnt) FROM t)는 새로운 쿼리 블록이므로 t를 알지 못해서 오류가 납니다.
'프로그래밍 > SQL, Hive, SAS 관련 정보' 카테고리의 다른 글
[SQL문제풀이] - Sub query의 활용 (0) | 2025.04.13 |
---|---|
[SQL 기초] CTE와 Sub-query의 차이 (0) | 2025.04.13 |
[SQL 기초] Group by와 Window함수의 동시사용 (0) | 2025.04.13 |
[SQL문제풀이-Groupby/Subquery] Movie Rating (0) | 2025.04.13 |
[SQL문제풀이-Union활용] Count Salary Categories (0) | 2025.04.09 |