티스토리 뷰

DB/SQL

SQL - 단일행/복수행 서브쿼리

xoo | 수진 2023. 7. 30. 23:08

-- < 단일행 서브쿼리 > : 서브쿼리가 실행되어 반드시 한 개의 행을 반환하는 서브쿼리 --

1. 비교 연산자


-- < 복수행 서브쿼리 > : 서브쿼리가 실행되어 반환되는 결과가 하나 이상의 행일 때 사용하는 서브쿼리 --
-- 1. IN 연산자: 서브쿼리 반환값이 복수이고 메인 쿼리와 동등 연산자(=) 방식으로 비교할 때                   

SELECT last_name, salary
FROM employees
WHERE salary IN ( SELECT salary
                  FROM employees
                  WHERE last_name IN ('Whalen','Fay') );


                  
                  
 
 -- 2. 다중 연산자 > ALL : 최대값보다 큰 값을 조회 ( 최대 월급보다 많은 )

SELECT last_name, department_id, salary
FROM employees
WHERE salary > ALL (SELECT salary
               FROM employees
               WHERE job_id = 'IT_PROG');
SELECT last_name, department_id, salary
FROM employees
WHERE salary > (SELECT max(salary)
               FROM employees
               WHERE job_id = 'IT_PROG');


               

            
-- 2. 다중 연산자 < all : 최소값보다 작은 값을 조회 ( 최소 월급보다 작은 )                 

SELECT last_name, department_id, salary
FROM employees
WHERE salary < ALL (SELECT salary
                     FROM employees
                      WHERE job_id = 'IT_PROG');

 


                      
 
-- 3. ANY 연산자 : 서브쿼리에서 반환되는 행들 전체에 대해 조건이 하나 이상만 만족하면 됨
-- > ANY (서브쿼리) : (서브쿼리에서 반환된) 최소값보다 큰 데이터를 조회

SELECT last_name, department_id, salary
FROM employees
WHERE salary > ANY (SELECT salary
                     FROM employees
                     WHERE job_id = 'IT_PROG');
SELECT last_name, department_id, salary
FROM employees
WHERE salary > (SELECT max (salary)
                     FROM employees
                     WHERE job_id = 'IT_PROG');

 

                  
-- < ANY (서브쿼리) : (서브쿼리에서 반환된) 최대값보다 작은 데이터를 조회   

SELECT last_name, department_id, salary
FROM employees
WHERE salary < ANY (SELECT salary
                     FROM employees
                     WHERE job_id = 'IT_PROG');


                     

 


                     
 -- 4. EXISTS 연산자 : 서브쿼리에서 실행된 결과가 하나라도 존재 하는지 여부를 확인할 때 사용
 -- 서브쿼리에서 검색된 결과가 하나라도 있으면 메인 쿼리에 전달된 값이 true이기 때문에 메인쿼리가 실행되어
 -- 검색 결과가 출력된다.
 -- 사원들 중에서 커미션을 받는 사원이 한 명이라도 있으면 모든 사원 정보를 출력

SELECT last_name, department_id, salary
FROM employees
WHERE EXISTS (SELECT employee_id
              FROM employees
              WHERE commission_pct IS NOT NULL);

'DB > SQL' 카테고리의 다른 글

SQL - DML  (0) 2023.07.31
SQL - 다중 컬럼 서브쿼리 / 인라인 뷰  (0) 2023.07.30
SQL - 서브쿼리(sub query)  (0) 2023.07.28
SQL - 그룹함수  (0) 2023.07.27
SQL - 날짜함수, 변환함수, 조건함수  (0) 2023.07.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함