728x90
반응형
해당 범위는 2024년부터 새로 추가된 범위라 내용이 많이 부족하여 내용을 추가하였습니다.
기존 내용
TOP N Query
출처: 홍쌤의 데이터 랩 유튜브
- 페이징 처리를 효과적으로 수행하기 위해 사용
- 전체 결과에서 특정 N개 추출
◆ TOP N 추출 방법
1. ROWNUM
2. RANK
3. FETCH
ROWNUM
- 출력된 데이터 기준으로 행 번호 부여
- 절대적인 행 번호가 아닌 가상의 번호이므로 특정 행을 지정할 수 없음 (=연산 불가)
- 첫번째 행이 증가한 이후 할당되므로 '>' 연산 사용 불가 ('0', '=>' 가능)
예제1. EMPLOYEES 테이블에서 급여가 높은 순서대로 상위 5명 직원 출력
[SQL 문]
※ 먼저 서브쿼리를 사용하여 (인라인 뷰) SALARY 에 대해 내림차순 정렬을 해놓고 상위 5개 가져옴.
[결과]
예제2. EMPLOYEES 테이블에서 급여가 높은 순서대로 4~6번째 해당하는 직원 정보 출력
[잘못된 SQL 문]
※ ROWNUM 시작값 (1) 이 정의되지 않았으므로 1을 건너뛰고 그 다음 행번호에 추출 불가
[정답 - 1]
※ 서브쿼리를 통해 얻은 결과에 ROWNUM을 다시 부여하여 새로운 테이블 인것처럼 사용 (인라인 뷰)
[정답 - 2]
※ 윈도우 함수의 RANK 사용
FETCH
- 출력될 행의 수를 제한하는 절
- ORACLE 12C 이상부터 제공 (이전 버전에는 ROWNUM 주로 사용)
- SQL Server 사용 가능
- ORDER BY 절 뒤에 사용 (내부 파싱 순서도 ORDER BY 절 뒤)
[문법]
SELECT FROM WHERE GROUP BY HAVING ORDER BY OFFSET N {ROW | ROWS} FETCH {FIRST | NEXT} N {ROW | ROWS} ONLY |
- OFFSET: 건너뛸 행의 수
- N: 출력할 행의 수
- FETCH: 출력할 행의 수를 전달하는 구문
- FIRST: OFFSET 을 쓰지 않았을 때 처음부터 N행 출력 명령
- NEXT: OFFSET 을 사용했을 경우 제외한 행 다음부터 N행 출력 명령
- ROW | ROWS : 행의 수에 따라 하나일 경우 단수, 여러값이면 복수행 (특별히 구분하지 않아도 됨.)
예제1. EMPLOYEES 테이블에서 SALARY 순서대로 상위 5명의 EMPLOYEE_ID, FIRST_NAME, JOB_ID, SALARY 추출하는 SQL 문 작성
[정답]
예제2. EMPLOYEES 테이블에서 급여가 높은 순서대로 4~6번째 해당하는 직원의 EMPLOYEE_ID, FIRST_NAME, JOB_ID, SALARY 추출하는 SQL 문 작성
[정답]
[출처]
홍쌤의 데이터랩 유튜브 (2024 시험 범위 개정 관련 유용한 정보들이 많습니다, 강추!)
728x90
반응형
'자격증 > SQLD' 카테고리의 다른 글
[SQLD] PIVOT / UNPIVOT (보강-2) (0) | 2024.03.01 |
---|---|
[SQLD] PIVOT/UNPIVOT (보강-1) (0) | 2024.03.01 |
[SQLD] 윈도우 함수 - ROW_NUMBER, PARTITION BY 예제 및 풀 (1) | 2024.02.27 |
SQL 집계함수 - SUM (0) | 2024.02.26 |
SQLD 2과목 SQL 활용 - 서브쿼리 (보강) (0) | 2024.02.19 |