WHERE 절에서 사용

-- D001 부서장의 사번과 이름 출력
SELECT
	emp.emp_id
	,emp.`name`
FROM employees emp
WHERE 
	emp.emp_id = (
		SELECT depm.emp_id
		FROM department_managers depm
		WHERE 
			depm.dept_code = 'D001'
			AND depm.end_at IS NULL
	)
;

image.png

-- 현제 부서장인 사원의 사번과 이름을 출력
SELECT
	emp.emp_id
	,emp.`name`
FROM employees emp
WHERE 
	emp.emp_id in (
		SELECT depm.emp_id
		FROM department_managers depm
		WHERE 
			depm.end_at IS NULL
	)
;

image.png

-- 현재 D002의 부서장이 해당 부서에 소속된 날짜 출력
SELECT 
	department_emps.*
FROM department_emps
WHERE
	(department_emps.emp_id, department_emps.dept_code) IN (
		select
			department_managers.emp_id
			,department_managers.dept_code
		FROM department_managers
		WHERE 
			department_managers.dept_code = 'D002'
			AND department_managers.end_at IS NULL)
;

image.png

-- 부서장 직을 지냈던 경력이 있는 사원의 정보 출력
SELECT 
	employees.*
FROM employees
WHERE 
	employees.emp_id IN(
		SELECT department_managers.emp_id
		FROM department_managers
		where
			department_managers.emp_id = employees.emp_id
	)
;

image.png

SELECT 절에서 사용

-- 사원별 역대 전체 급여 평균
SELECT
	emp.emp_id
	,(
		SELECT AVG(sal.salary)
		FROM salaries sal
		WHERE emp.emp_id = sal.emp_id
	) avg_sal
FROM employees emp
;

image.png

FROM 절에서 사용

SELECT 
	tmp.*
FROM (
	SELECT 
		emp.emp_id
		,emp.`name`
	FROM employees emp
) tmp
;

image.png

INSERT문에서 사용

image.png