Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- array
- 글또10기
- app:compiledebugkotlin
- async
- set
- app.post
- generic
- meatadata
- javascript
- reactnative
- 타입스크립트
- 배열중복요소제거
- Filter
- 슬라이딩윈도우
- 이진탐색
- supabase 페이지네이션
- 안드로이드빌드에러
- Next.js
- 리액트네이티브아이콘
- 스크롤이벤트
- mainapplication.kt
- react
- 페이지네이션
- Spring
- map
- extends
- TS
- 상속
- interface
- materialicons
Archives
- Today
- Total
rhanziy
SQL - 쿼리 분석 본문
첫줄의 ROW_NUMBER()설명 보충
ROW_NUMBER() 은 윈도우 함수 중 하나로 결과 집합의 행 일련 번호를 매겨주는 함수이다.
일반적으로 PARTITION BY 구문과 함께 사용되며 특정 기준으로 나뉘어진 각 파티션의 행들은 ROW_NUMBER()에 의해 '1'부터 차례대로 넘버링 된다. 순위 동률을 메기는 RANK()와는 다르게 모든 행의 번호를 고유하게 순차적으로 지정하는 것이 특징이다. 구문은 다음과 같다.
ROW_NUMBER() OVER ([PARTITION BY value_expression, ... [n]] order_by_clause)
* OVER : 쿼리 결과 집합 내의 윈도우 또는 사용자 지정 행 집합을 정의한다. OVER 절에 윈도우 함수를 사용하여 이동 평균, 누적 집계, 누계 또는 그룹 결과당 상위 N개 결과 등의 집계된 값을 계산할 수 있다.
* PARTITION BY : 특정 열을 기준으로 데이터를 나눈다. PARTITION_BY를 지정하지 않으면 쿼리 결과 집합의 모든 행이 단일 그룹으로 취급된다.
// 1. PARTITION BY 없이 사용
SELECT
ROW_NUMBER() OVER(ORDER BY name ASC) AS Row#, name, recovery_model_desc
FROM sys.databases
WHERE database_id < 5;
// Row#, name, recovery_model_desc
// 1, master, SIMPLE
// 2, model, FULL
// 3, msdb, SIMPLE
// 4, tempdb, SIMPLE
// 2. PARTITION BY 사용, recovery_model_desc를 기준으로 파티션이 나뉜다.
SELECT
ROW_NUMBER() OVER(PARTITION BY recovery_model_desc ORDER BY name ASC) AS Row#,
name, recovery_model_desc
FROM sys.databases
WHERE database_id < 5;
// Row#, name, recovery_model_desc
// 1, model, FULL
// 1, master, SIMPLE
// 2, msdb, SIMPLE
// 3, tempdb, SIMPLE
👉 결과 : ROWNO 라는 컬럼명으로 결과값이 순차적으로 번호가 매겨져서 도출됨.
'Java' 카테고리의 다른 글
Spring - Spring Interceptor 실습 (0) | 2023.04.21 |
---|---|
Spring - Spring Interceptor 스프링 인터셉터 (0) | 2023.04.21 |
SQL - OUTER JOIN 외부조인 (0) | 2023.04.17 |
Java - 제네릭 클래스 (0) | 2023.04.11 |
Java - 제네릭스 (1) | 2023.04.11 |
Comments