Oracle Database - 2) 다중행 서브쿼리
https://kwanghyung.tistory.com/entry/Oracle-Database-1-SUBQUERY
Oracle Database - 1) SUBQUERY
https://kwanghyung.tistory.com/entry/Oracle-Database-2JOIN Oracle Database - 2)JOIN https://kwanghyung.tistory.com/entry/Oracle-Database-1JOIN Oracle Database - 1)JOIN https://kwanghyung.tistory.com..
kwanghyung.tistory.com
1.다중행 서브쿼리
서브쿼리의 조회 결과값이 여러 행일 경우
1) IN (100,200,300) 서브쿼리 : 여러개의 결과값중에서 하나라도 일치하는것이 있다면
그 반대 값으로 NOT IN 은 없다면 입니다 .
2-1) > ANY (100,200,300) 서브쿼리 : 여러개의 결과 값중에서 하나라도 클 경우를 말합니다.
2-2) < ANY (100,200,300) 서브쿼리 : 여러개의 결과값중에서 하나라도 작을 경우를 말합니다.
3-1) > ALL : 여러개의 결과값의 모든 값보다 클 경우를 말합니다.
3-2) < ALL : 여러개의 결과값의 모든 값보다 작을 경우를 말합니다.
연습문제1) 각 부서 별 최고 급여를 받는 사원의 이름, 직급코드, 급여 조회
SELECT EMP_NAME,JOB_CODE, SALARY
FROM EMPLOYEE
WHERE SALARY IN (SELECT MAX(SALARY)
FROM EMPLOYEE
GROUP BY DEPT_CODE);
연습문제2) 아이유 또는 박은빈 사원과 같은 직급인 사원들을 조회하시오 (사원명, 직급코드, 부서코드, 급여)
SELECT EMP_NAME,JOB_CODE,DEPT_CODE,SALARY
FROM EMPLOYEE
WHERE JOB_CODE IN (SELECT JOB_CODE
FROM EMPLOYEE
WHERE EMP_NAME IN ('아이유','박은빈'));
2.(단일행) 다중열 서브쿼리
서브쿼리 조회 결과가 값은 한 행이지만, 나열된 컬럼의 개수가 여러개일 경우를 말합니다.
연습문제3) 우영우 사원과 같은 부서코드, 같은 직급코드에 해당하는 사원들 조회(사원명, 부서코드, 직급코드, 입사일)
SELECT EMP_NAME,DEPT_CODE,JOB_CODE,HIRE_DATE
FROM EMPLOYEE
WHERE (DEPT_CODE,JOB_CODE) = (SELECT DEPT_CODE,JOB_CODE
FROM EMPLOYEE
WHERE EMP_NAME='우영우';
3.다중행 다중열 서브쿼리
서브쿼리 조회 결과가 여러행 여러 컬럼일 경우
연습문제1) 각 직급별 최소 급여를 받는 사원들 조회(사번,이름,직급코드,급여)
SELECT EMP_ID,EMP_NAME,JOB_CODE,SALARY
FROM EMPLOYEE
WHERE (JOB_CODE,SALARY) IN (SELECT JOB_CODE, MIN(SALARY)
FROM EMPLOYEE
GROUP BY JOB_CODE);
4.인라인뷰(INLINE VIEW)
FROM절에 서브쿼리를 제시하는것을 말합니다.
연습문제1) 보너스 포함 연봉이 3000만원 이상인 사원들의 사번,이름,보너스 포함 연봉,부서코드를 조회(인라인뷰 사용)
SELECT EMP_NAME
FROM (
SELECT EMP_ID,EMP_NAME,((SALARY+(SALARY*NVL(BONUS,0)))*12) 연봉,DEPT_CODE
FROM EMPLOYEE
WHERE ((SALARY +(SALARY*NVL(BONUS,0)))*12) >=30000000
) -- 보너스포함 연봉이 3000만원 이상인 사원들의 이름
WHERE DEPT_CODE IS NOT NULL;
'DB-디비는 즐겁다' 카테고리의 다른 글
DDL (DATA DEFINITION LANGUAGE) : 데이터 정의 언어 (0) | 2022.08.12 |
---|---|
Oracle Database - 3)다중열 서브쿼리 (1) | 2022.08.11 |
Oracle Database - 1) SUBQUERY (0) | 2022.06.30 |
Oracle Database - 2)JOIN (0) | 2022.06.29 |
Oracle Database - 1)JOIN (0) | 2022.06.27 |
댓글
이 글 공유하기
다른 글
-
DDL (DATA DEFINITION LANGUAGE) : 데이터 정의 언어
DDL (DATA DEFINITION LANGUAGE) : 데이터 정의 언어
2022.08.12 -
Oracle Database - 3)다중열 서브쿼리
Oracle Database - 3)다중열 서브쿼리
2022.08.11 -
Oracle Database - 1) SUBQUERY
Oracle Database - 1) SUBQUERY
2022.06.30 -
Oracle Database - 2)JOIN
Oracle Database - 2)JOIN
2022.06.29