TOP
SQL Server 7.0부터 지원
쿼리가 반환하는 결과 중 특정 행의 수나 퍼센트만으로 제한.
현재 Data 수는 295개
- 5개의 행 리턴
SELECT TOP 5 * FROM SalesLT.Product
- 10퍼센트의 행 리턴
: 총 295개 중 10% 29.5 -> 올림 해서 30개를 조회한다.
: 16퍼센트 > 47.2 -> 48개를 조회한다.
SELECT TOP 10 PERCENT * FROM SalesLT.Product -- 10 퍼센트만 조회
WITH TIES
동일한 값을 가지는 행을 출력하게 할때 사용한다.
10개를 조회해도, 동일한 값이 있으면 조회한다.
(테스트를 위해 좀 극단적인 데이터를 조회했음.)
SELECT TOP 10 WITH TIES * FROM SalesLT.Product
WHERE COLOR IS NOT NULL
ORDER BY Color
OFFSET-FETCH 필터
TOP은 확실히 많이 쓰이지만 아래 2가지 단점 있다.
- 표준구문 형태가 아니다.
- 건너뛸 수 있는 기능 없다
SQL SERVER 2012의 OFFSET-FETCH 필터는 ORDER BY 절의 일부분으로 간주되어 처리
- OFFSET - 얼마나 많은 행들을 건너뛸지 설정하며
- FETCH - 건너편 다음에 얼마나 많은 행을 필터링해서 출력할지 설정.
먼저 ProductID로 정렬해서 조회하면,
처음에 680부터 시작하는 데이터를,
10개 이후를 건너뛴 715번부터 해서
총 25개를 리턴한다.
SELECT * FROM SalesLT.Product
ORDER BY ProductID
OFFSET 10 ROWS FETCH NEXT 25 ROWS ONLY
-- 10개 행을 건너뛰고 이후에 25개의 ROW를 리턴
- 행을 뛰어넘기 싫다면, OFFSET 0 ROWS
'프로그래밍&IT > SQL Server (MS-SQL)' 카테고리의 다른 글
데이터 피벗, 언피벗 (Pivot, Unpivot) (1) | 2024.01.27 |
---|---|
윈도우 함수 : 순위, 오프셋, 집계 (1) | 2024.01.25 |
WITH 절, 재귀 CTE (Common Table Expression) (0) | 2016.04.08 |
SEQUENCE 개체 (identity같은 효과 및 오라클에서 지원하는 Sequence같은 기능 제공) (0) | 2016.04.03 |
WITH 절 CTE (Common Table Expression) 임시테이블? (0) | 2016.04.03 |