일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Jenkins
- Spring Boot
- 코딩
- 백준
- MST
- Spring Cloud
- 운영체제
- 클라우드
- 자료구조
- Intellj
- 오라클
- Spring Cloud Feign
- db
- Kafka
- JPA
- 쿼리
- golang
- PL/SQL
- DP
- feign
- 페이징
- MVC
- Spring
- SQL
- retry
- aws
- 알고리즘
- 자바
- 데이터베이스
- 디자인 패턴
- Today
- Total
justgo_developer
서브쿼리, any, all 본문
서브쿼리(SubQuery)란?
- Main Query에 반대되는 개념으로 이름을 붙인 것.
- 메인쿼리를 구성하는 소단위 쿼리
- select, insert, delete, update절에서 모두 사용 가능
- 서브쿼리의 결과 집합을 메인쿼리가 중간 결과값으로 사용
- 서브쿼리 자체는 일반 쿼리와 다를 바가 없음.
/*서브쿼리*/
① select Round(avg(salary))
from employees;
-> 결과값 6462
② select employee_id, first_name, last_name
from employees
where salary < 6462;
select employee_id, first_name, last_name
from EMPLOYEES
where salary < Round(avg(salary)); /*where 절에서는 집계함수 사용불가*/
-> 에러
서브쿼리문 사용한 ①과 ②
select employee_id, first_name, last_name
from EMPLOYEES
where salary < ( select Round(avg(salary))
from employees );
select location_id
from locations
where state_province is null;
-> state_province 속성값이 null인 경우에 location_ID값 가져오기
select *
from departments
where location_id in ( select location_id
from locations
where state_province is null) ;
select *
from departments
where location_id in ( select location_id
from locations
where country_id ='US' );
-> 서브 쿼리 결과값이 다중 값으로 존재할떄 사용
/*월급이 가장 적은 사원*/
select emp.first_name, emp.last_name, job.job_title
from employees emp , jobs job
where emp.salary = ( select min(salary) from employees )
and emp.job_id = job.job_id ;
/*평균 급여보다 많이 받는 사원들의 명단 조회 */
select emp.first_name, emp.last_name, job.job_title
from employees emp , jobs job
where emp.salary > ( select avg(salary) from employees )
and emp.job_id = job.job_id ;
<any, all>
다중 값을 얻어왔을때
select employees_id, department_id, salary
from employees
where salary > any ( select salary
from employees
where department_id = 20 );
= select employees_id, department_id, salary
from employees
where salary > ( select min(salary)
from employees
where department_id = 20 );
select employees_id, department_id, salary
from employees
where salary > all ( select salary
from employees
where department_id = 20 );
= select employees_id, department_id, salary
from employees
where salary >( select max(salary)
from employees
where department_id = 20 );
'IT > Oracle' 카테고리의 다른 글
DML(Data Manipulation Language) : select문, delete문, insert문, update문 (0) | 2018.10.21 |
---|---|
DDL(Data Definition Language) : Create문, Drop문, Alter문, Truncate문 (0) | 2018.10.14 |
조인(내부조인, 외부조인) (0) | 2018.10.03 |
group by, having (0) | 2018.09.30 |
오라클 기본함수 : 날짜함수,변환함수, decode, case (0) | 2018.09.29 |