by 토로 [SQL Query] Inline View WHERE JOIN ANSI [2020.12.23 02:29:48]
안녕하세요.
인라인 뷰를 공부하다 의문점이 들어 질문드립니다.
SELECT EMP_ID, EMP_NAME, DEPT_TITLE, JOB_NAME, HIRE_DATE,
(SALARY*(NVL(BONUS,0)+1))*12 보너스연봉,
RANK() OVER(ORDER BY( (SALARY)*(NVL(BONUS,0)+1))*12 DESC ) 순위
FROM EMPLOYEE
JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID)
JOIN JOB USING(JOB_CODE)
WHERE 순위 <6;
--Inline View
SELECT *
FROM (
SELECT EMP_ID, EMP_NAME, DEPT_TITLE, JOB_NAME, HIRE_DATE,
((SALARY)*(NVL(BONUS,0)+1))*12 보너스연봉,
RANK() OVER(ORDER BY ((SALARY)*(NVL(BONUS,0)+1))*12 DESC) 순위
FROM EMPLOYEE
JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID)
JOIN JOB USING(JOB_CODE)
)
WHERE 순위 <6;
JOIN 뒤에도 WHERE을 사용하여 순위를 조회해볼까 했는데,
생각과는 달리 오류가 뜨더라고요...! ORA-00904: "순위": invalid identifier
왜 굳이 FROM구문에 인라인 뷰를 작성하여 WHERE을 검사하는 걸까요? 둘의 차이를 알고 싶습니다.