멀리 보는 연습

DATABASE_서브쿼리 본문

Study/DATABASE

DATABASE_서브쿼리

푸실리 2021. 5. 31. 20:16

1. 서브쿼리란?

하나의 SQL문에 포함되어 있는 또 다른 SQL문

 

 

*예제01

Abel이라는 사원보다 더 많은 급여를 받는 사원의 이름과 급여를 출력하시오.

1 select last_name, salary
2 from employees
3* where salary > (select salary from employees where last_name='Abel')

 

서브쿼리 (30, 40)

> any (최소값 30보다 큰 값) >> 40,50,60

< any ( 최대값 40보다 작은 값) >> 10, 20,30

> all ( 전부(최대값)보다 큰값) >> 50, 60

< all (전부(최소값)보다 작은값) >> 10,20

 

*예제02

Zlotkey와 동일한 부서에 근무하는 다른 모든 사원들의 사번 및 고용 날짜를 출력하시오.

1 select employee_id, hire_date
2 from employees
3 where department_id in(select department_id from employees where last_name='Zlotkey')
4* and last_name <> 'Zlotkey'

*예제03

회사 전체 평균 급여보다 더 급여를 많이 받는 사원들의 사번 및 이름을 출력하시오.

SQL> select employee_id, last_name
2 from employees
3 where salary > (select avg(salary) from employees);

*예제04

이름에 u가 포함되는 사원들과 동일 부서에 근무하는 사원들의 사번 및 이름을 출력하시오.

1 select employee_id, last_name
2 from employees
3* where department_id in (select department_id from employees where last_name like '%u%')

 

*예제05

시애틀에 근무하는 사람 중 커미션을 받지 않는 모든 사람들의 이름,  부서명, 지역ID를 출력하시오

select e.last_name, d.department_name, l.location_id
from employees e, departments d, locations l
where e.department_id = d.department_id
and d.location_id=l.location_id
and l.city='Seattle'
and e.commission_pct is null

 

1 select e.last_name, d.department_name, location_id
2 from employees e, departments d
3 where e.department_id = d.department_id
4 and d.location_id = (select location_id from locations where city='Seattle')
5* and e.commission_pct is null

 

 

*예제06

이름이 DAVIES 인 사람보다 후에 고용된 사원들의 이름 및 고용 일자를 출력하시오. 고용일자를 역순으로 출력하시오.

1 select last_name, hire_date
2 from employees
3 where hire_date > all (select hire_date from employees where last_name = 'Davies')
4* order by hire_date desc

 

 

*예제07

King 을 매니저로 두고 있는 모든 사원들의 이름 및 급여를 출력하시오.

1 select last_name, salary
2 from employees
3* where manager_id in(select employee_id from employees where last_name = 'King')

 

 

*예제08

회사 전체 평균 급여보다 더 많이 받는 사원들 중에 이름에 u가 있는 사원들이 근무하는 부서에서 근무하는 사원들의 사번, 이름 및 급여를  출력하시오.

1 select employee_id, last_name, salary
2 from employees
3 where department_id in (select department_id from employees where last_name like '%u%'
4* and salary > (select avg(salary) from employees))

 

'Study > DATABASE' 카테고리의 다른 글

DATABASE_group by, SQL 구문 실행 순서, having  (0) 2021.05.31
DATABASE_조인  (0) 2021.05.31
DATABASE_연산자, where, order by, 비교 조건 예제  (0) 2021.05.23
DATABASE_명령문  (0) 2021.05.23
DATABASE_용어  (0) 2021.05.23
Comments