1. 서브쿼리
2. 스칼라 서브쿼리
SELECT A.직원ID
, A.연봉
, A.부서ID
, (
SELECT 부서명
FROM 부서
WHERE 부서ID = A.부서ID
) AS 부서명
FROM 직원 A
WHERE 직원ID BETWEEN 'A0001' AND 'A0006';
방법1)
SELECT A.직원ID
, A.연봉
, A.부서ID
, (
SELECT 부서명
FROM 부서
WHERE 부서ID = A.부서ID
) AS 부서명
FROM 직원 A
WHERE 직원ID BETWEEN 'A0001' AND 'A0006';
방법2)
SELECT A.직원ID
, A.연봉
, A.부서ID
, B.부서명
FROM 직원 A LEFT OUTER JOIN 부서 B
ON (A.부서ID = B.부서ID)
WHERE A.직원ID BETWEEN 'A0001' AND 'A0006';
SELECT A.직원ID
, A.이름
, A.주민등록번호
, (
SELECT 연락처
FROM 직원연락처
WHERE 직원ID = A.직원ID
AND 구분코드 = '휴대폰'
) AS 휴대폰번호
FROM 직원 A
WHERE 직원ID BETWEEN 'A0006' AND 'A0010';
SELECT A.직원ID
, A.이름
, A.주민등록번호
, (
SELECT 연락처
FROM 직원연락처
WHERE 직원ID = A.직원ID
AND 구분코드 = '휴대폰'
) AS 휴대폰번호
, (
SELECT 주소
FROM 직원주소
WHERE 직원ID = A.직원ID
AND 구분코드 = '집'
) AS 집주소
FROM 직원 A
WHERE 직원ID BETWEEN 'A0006' AND 'A0010';
3. 인라인뷰
SELECT A.직원ID
, A.이름
, A.연봉
, B.부서별최고연봉
FROM 직원 A
, (
SELECT 부서ID
, MAX(연봉) AS 부서별최고연봉
FROM 직원
WHERE 부서ID IS NOT NULL
GROUP BY 부서ID
) B
WHERE A.부서ID = B.부서ID
AND A.연봉 = B.부서별최고연봉;
SELECT *
FROM (
SELECT *
FROM 직원
ORDER BY 나이
)
WHERE ROWNUM <= 3;
4. 중첩서브쿼리
SELECT *
FROM 직원
WHERE 연봉 >= (
SELECT AVG(연봉)
FROM 직원
);
SELECT *
FROM 직원 A
WHERE 성별 = '남'
AND 연봉 >= (
SELECT AVG(연봉)
FROM 직원
WHERE 부서ID = A.부서ID
);
SELECT *
FROM 직원 A
WHERE 연봉 = (
SELECT MAX(연봉)
FROM 직원
WHERE 부서ID = A.부서ID);
SELECT *
FROM 직원
WHERE 입사일시 = (SELECT MAX(입사일시)
FROM 직원);
SELECT *
FROM 직원
WHERE 연봉 = (SELECT MAX(연봉)
FROM 직원);
5. 단일행/다중행 연산자
SELECT 직원ID
, 이름
, 나이
, 연봉
FROM 직원
WHERE 직원ID NOT IN (SELECT 직원ID
FROM 직원연락처);
'Computer Engineering > DB_Oracle' 카테고리의 다른 글
ROWNUM, TOP-N, 페이징 (0) | 2023.03.11 |
---|---|
SQL_FROM&JOIN 예제_총정리 (0) | 2023.03.08 |
SQL_WHERE 예제_총정리 (0) | 2023.03.08 |
SQL_SELECT 예제_총정리 (0) | 2023.03.08 |
DDL (0) | 2023.03.08 |
댓글