SQL - 서브쿼리

2024. 7. 15. 15:14·코딩테스트연습/SQL_프로그래머스
목차
  1. 1) 단일 행 서브쿼리 
  2. 2) 다중 행 서브쿼리 
  3. 3) 다중 열 서브쿼리: WHERE 조건식에서 비교되는 열이 여러 개
  4. 4) FROM절 서브쿼리: 인라인 뷰 

1) 단일 행 서브쿼리 


    
sql
SELECT FIRST_NAME FROM EMPLOYEES
WHERE SALARY = (SELECT MIN(SALARY) FROM EMPLOYEES);
-- 예제 'De Haan'과 salary가 동일한 직원
SELECT * 
FROM EMPLOYEES A
WHERE A.SALARY = (
                  SELECT SALARY FROM EMPLOYEES
                  WHERE LAST_NAME = 'De Haan'
                  );      -- '=': 단일 행 연산자
-- 'Taylor'와 salary가 동일한 직원은?
SELECT SALARY FROM EMPLOYEES WHERE LAST_NAME = 'Taylor'; -- 서브쿼리
SELECT * 
FROM EMPLOYEES A
WHERE A.SALARY = (
                  SELECT SALARY FROM EMPLOYEES
                  WHERE LAST_NAME = 'Taylor'
                  );
-- 서브쿼리가 다중 행일 경우 단일 행 연산자를 사용할 수 없음
-- 즉, A.SALARY = 8600이면서 3200일수는 없음
-- '=any' 등 연산자를 추가해줄 경우 해결 가능

 

2) 다중 행 서브쿼리 


    
sql
-- 예제 department_id별로 가장 낮은 salary 조회, 해당 직원은 누구인가?
SELECT MIN(SALARY) 최저급여 FROM EMPLOYEES GROUP BY DEPARTMENT_ID; -- 서브쿼리
SELECT * 
FROM EMPLOYEES A
WHERE A.SALARY IN (
                  SELECT MIN(SALARY) 최저급여 FROM EMPLOYEES
                  GROUP BY DEPARTMENT_ID
                  )
ORDER BY A.SALARY DESC;      -- 'IN': 다중 행 연산자
-- '=ANY': 다중 행 연산자로, ANY와 ALL은 반드시 비교 연산자(>/=/<)를 앞에 같이 써야 함
SELECT * 
FROM EMPLOYEES A
WHERE A.SALARY =any (
                  SELECT MIN(SALARY) 최저급여 FROM EMPLOYEES
                  GROUP BY DEPARTMENT_ID
                  )
ORDER BY A.SALARY DESC;

 

3) 다중 열 서브쿼리: WHERE 조건식에서 비교되는 열이 여러 개


    
sql
-- 예제 job_id별로 가장 낮은 salary 조회, 해당 직원은 누구인가?
SELECT JOB_ID, MIN(SALARY) 그룹별급여 FROM EMPLOYEES GROUP BY JOB_ID; -- 서브쿼리
SELECT * FROM EMPLOYEES A
WHERE (A.JOB_ID, A.SALARY) IN (
SELECT JOB_ID, MIN(SALARY) 그룹별급여
FROM EMPLOYEES
GROUP BY JOB_ID
)
ORDER BY A.SALARY DESC;

 

4) FROM절 서브쿼리: 인라인 뷰 


    
sql
SELECT *
FROM EMPLOYEES A,
(SELECT TO_CHAR(HIRE_DATE, 'YYYY'), SUM(SALARY)
FROM EMPLOYEES
GROUP BY TO_CHAR(HIRE_DATE, 'YYYY')) B;
-- 예제 직원 중 department_name이 IT인 직원의 정보를 인라인 뷰를 이용해 출력
SELECT * FROM EMPLOYEES A,
( SELECT DEPARTMENT_ID
FROM DEPARTMENTS
WHERE DEPARTMENT_NAME = 'IT') B
WHERE A.DEPARTMENT_ID = B.DEPARTMENT_ID;

 

'코딩테스트연습 > SQL_프로그래머스' 카테고리의 다른 글

역순 정렬하기  (0) 2024.11.07
SQL - INSERT / UPDATE / DELETE  (2) 2024.07.15
SQL - 조인(Join)  (0) 2024.07.15
SQL - 내장 함수  (0) 2024.07.15
SQL - SELECT문  (0) 2024.07.15
  1. 1) 단일 행 서브쿼리 
  2. 2) 다중 행 서브쿼리 
  3. 3) 다중 열 서브쿼리: WHERE 조건식에서 비교되는 열이 여러 개
  4. 4) FROM절 서브쿼리: 인라인 뷰 
'코딩테스트연습/SQL_프로그래머스' 카테고리의 다른 글
  • 역순 정렬하기
  • SQL - INSERT / UPDATE / DELETE
  • SQL - 조인(Join)
  • SQL - 내장 함수
분석가 황규진
분석가 황규진
공공기관 위험평가관련 부서에서 근무하고 있습니다.
글쓰기 관리
분석가 황규진
HGJ's Insight
홈
|
로그인
  • 전체 글 574
    • 개인 활동(일상) 4
      • 독서 2
      • 근황 공유 1
      • 업무 관련 1
    • 개인 활동(공부) 59
      • Tableau Bootcamp 10
      • 금융 공부 11
      • 직무 공부 26
      • 강의 12
    • 개인프로젝트 4
      • 신용카드 연체 평가 모델 0
      • 대출 승인 여부 예측 모델 4
    • 자격증 7
      • 빅데이터분석기사 1
      • 정보처리기사 1
      • 경영정보시각화 1
      • SQL개발자(SQLD) 1
      • 데이터 분석 준전문가(ADsP) 1
      • 통계적품질관리(SPC) 1
      • AICE Associate 1
    • 코드 정리 11
      • 코드 정리 - Tistory 8
      • 코드 정리 - Python 3
    • 코딩테스트연습 116
      • SQL_프로그래머스 116
    • 취업사관학교 9기 199
      • 모닝스쿨 54
      • 스스로 모닝스쿨 125
      • 직무 스터디 20
      • 반성과 다짐 0
    • 빅데이터 분석가 양성과정 173
      • Python 88
      • Python - 머신러닝 26
      • Python - 딥러닝 31
      • PyQt 4
      • JavaScript 10
      • MySQL 13
      • Node.js 1
hELLO· Designed By정상우.v4.6.1
분석가 황규진
SQL - 서브쿼리
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.