=, !=, >, >=, <, <=
-- SELECT *
-- FROM EMPLOYEES
-- WHERE JOB_ID = (사원번호가 101인 사원의 직업);
SELECT *
FROM EMPLOYEES
WHERE JOB_ID = (SELECT JOB_ID
FROM EMPLOYEES
WHERE EMPLOYEE_ID = 101);
-- SELECT *
-- FROM EMPLOYEES
-- WHERE DEPARTMENT_ID IN (부서명이 'IT'인 부서의 부서번호);
SELECT *
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID
FROM DEPARTMENTS
WHERE DEPARTMENT_NAME = 'IT'); -- 서브쿼리의 DEPARTMENT_NAME 칼럼은 중복이 있을 수 있으므로 다중 행 서브쿼리로 처리한다.
SELECT *
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID
FROM DEPARTMENTS
WHERE LOCATION_ID IN (SELECT LOCATION_ID
FROM LOCATIONS
WHERE CITY = 'Seattle'));
SELECT *
FROM EMPLOYEES
WHERE SALARY = (SELECT MAX(SALARY)
FROM EMPLOYEES);
SELECT *
FROM EMPLOYEES
WHERE HIRE_DATE = (SELECT MIN(HIRE_DATE)
FROM EMPLOYEES);
SELECT *
FROM EMPLOYEES
WHERE SALARY >= (SELECT AVG(SALARY)
FROM EMPLOYEES);
SELECT 행번호, EMPLOYEE_ID
FROM (SELECT ROW_NUMBER() OVER(ORDER BY SALARY DESC) AS 행번호, EMPLOYEE_ID
FROM EMPLOYEES)
WHERE 행번호 = 3;
SELECT RN, EMPLOYEE_ID
FROM (SELECT ROW_NUMBER() OVER(ORDER BY SALARY DESC) AS RN, EMPLOYEE_ID
FROM EMPLOYEES)
WHERE RN BETWEEN 11 AND 20;
SELECT EMPLOYEE_ID
FROM (SELECT ROW_NUMBER() OVER(ORDER BY HIRE_DATE ASC) AS RN, EMPLOYEE_ID
FROM EMPLOYEES)
WHERE RN BETWEEN 21 AND 30;
-- 부서번호가 50인 부서에 근무하는 사원번호, 사원명, 부서명 조회하기 (비상관)
SELECT EMPLOYEE_ID
, FIRST_NAME
, LAST_NAME
, (SELECT DEPARTMENT_NAME
FROM DEPARTMENTS
WHERE DEPARTMENT_ID = 50) AS DEPT_NAME
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 50;
부서번호가 50인 부서에 근무하는 사원번호, 사원명, 부서명 조회하기 (상관)
SELECT E.EMPLOYEE_ID
, E.FIRST_NAME
, E.LAST_NAME
, (SELECT D.DEPARTMENT_NAME
FROM DEPARTMENTS D
WHERE D.DEPARTMENT_ID = E.DEPARTMENT_ID
AND D.DEPARTMENT_ID = 50) AS DEPT_NAME
FROM EMPLOYEES E;
티스토리
-연습문제_서브쿼리
https://hyeonju50.tistory.com/25