Oracle SQL - Select 개발일지(7)(작성중)

Nam-Soomin·2022년 9월 2일
0

Oracle SQL

목록 보기
7/7

🗸 6장 서브 쿼리


📌 서브 쿼리란?

  • 톰보다 급여가 많은 사원은 누구인가?
    얼핏보면 문제는 톰보다 급여가 많은 사람을 찾는 것이 문제지만, 문제를 풀기 위해서는 먼저 톰의 급여를 찾아야한다. 이때 부수적으로 구해야하는 요소인 톰의 급여를 '서브 쿼리' 라고 한다.
  • 서브 쿼리의 위치는 조건절에 괄호로 들어간다.
Select last_name
from employees 
where salary > (select salary from employees where last_name = 'Abel');


※ (톰이 db에 없기에 아벨로 조회하였다.)

  • 단일 행 서브 쿼리에는 단일 행 연산자를 사용하고 다중 행 서브 쿼리에는 다중 행 연산자를 사용한다.

    *단일 행 서브쿼리 : 쿼리의 결과가 1건
    *다중 행 서브쿼리 : 쿼리의 결과가 여러건

    연산자를 바꿔주어야 한다는 뜻이다.


📌 단일 행 서브 쿼리

  • 한 행만 반환한다.
  • 단일 행 비교 연산자를 사용한다.
  • 앞서 지금까지 써오던 연산자를 사용하는 것이다.
    (=,>,>=,<,<=,<>(같지 않음))

가장 작은 월급을 받는 사람은 누구인가?

select last_name, job_id, salary from employees
where salary = (select min(salary) from employees);
  • 최소월급을 찾고 월급=최소월급인 사람은 누구인가?의 방식으로 찾으면 된다.
  • 참고로 최대월급을 받는 사람을 조회하려면 MIN을 MAX로 바꾸어 주면 된다.
select last_name, job_id, salary from employees
where salary = (select max(salary) from employees);


📌 다중 행 서브 쿼리

  • 여러 행을 반환한다.
  • 여러 행 비교 연산자를 사용한다.
  • = -> 사용x
  • 다중 행 비교 연산자인 in, any, all을 사용하자.

🧙🏼 연습문제)

6-1)Zlotkey와 동일한 부서에 속한몯느 사원의 이름과 입사일을 표시하는 질의를 작성하시오. 즐옽키는 제외하시오.

코드를 입력하세요
  • 설명
    (사진)

6-2)급여가 평균 급여보다 많은 모든 사우너의 사원 번호와 이름을 표시하는 질의를 작성하고 결과를 급여에 대해 오름차순으로 정렬하십시오.

코드를 입력하세요
  • 설명
    (사진)

6-3)이름에 u가 포함된 사원과 같은 부서에서 일하는 모든 사원의 사원 번호와 이름을 표시하는 질의를 작성하시오.

코드를 입력하세요
  • 설명
    (사진)

6-4)부서 위치 ID가 1700인 모든 사원의 이름, 부서 번호 및 업무 ID를 표시하시오.

코드를 입력하세요
  • 설명
    (사진)

6-5)King에게 보고하는 모든 사원의 이름과 급여를 표시하시오.

코드를 입력하세요
  • 설명
    (사진)

6-6)Executive 부서의 모든 사원에 대한 부서 번호, 이름 및 업무 ID를 표시하시오.

코드를 입력하세요
  • 설명
    (사진)

6-7)...을 수정하여 평균 급여보다 많은 급열르 받고 이름에 u가 포함된 사원과 같은 부서에서ㅔ 근무하는 모든 사원의 사원 번호, 이름 및 급여를 표시하시오.

코드를 입력하세요
  • 설명
    (사진)

profile
🇰🇷Dreaming Full-Stack WEB Developer

0개의 댓글

관련 채용 정보