창 기능에 대한 지식

창 기능에 대한 지식 :

1. <window function>의 위치는 다음과 같은 두 가지 기능을 포함 할 수 있습니다.
1) rank, density_rank, row_number 등의 전용 창 함수 및 나중에 언급 할 기타 전용 창 함수.
2) sum. avg, count, max, min 등과 같은 집계 함수.

2. 사용법
윈도우 함수는 where 또는 group by 절의 결과에 대해 작동하므로 원칙적 으로 윈도우 함수 는 select 절에서만 작성 될 수 있습니다 .
간단히 말해서 윈도우 기능은 다음과 같은 기능을 가지고 있습니다.
1) 그룹화와 정렬을 동시에하는 기능을 가지고 있습니다.
2) 원래 테이블의 행 수를 줄이지 않습니다.
3) 구문은 다음과 같습니다.

<窗口函数> over (partition by <用于分组的列名>
                order by <用于排序的列名>)

3.
윈도우 기능의 특징 윈도우 기능은 이전에 배운 절별 분류 기능과 절별 정렬 기능이 있습니다. 그렇다면 왜 창 기능을 사용합니까? group by
그룹화 및 요약 후 테이블의 행 수를 변경하고 행에 범주가 하나만 있기 때문입니다. 분할 기준 및 순위 함수는 원래 테이블의 행 수를 줄이지 않습니다 . 예를 들어, 다음은 각 클래스의 사람 수를 계산합니다.
여기에 사진 설명 삽입
즉, 창 기능에는 다음과 같은 기능이 있습니다.

1) 기능별 분할 기능과 순서별 기능이 모두 포함되어 있습니다
.2) 원본 테이블의 행 수를 줄이지 않으므로 각 그룹 내에서 순위를 매기는 데 자주 사용됩니다.

4. 특수 창 기능의 예 :
여기에 사진 설명 삽입
클래스 "1"을 예로 들어이 클래스의 등급 "95"가 1 위, 클래스 "83"이 4 위입니다. 위의 결과는 실제로 각 클래스의 요구 사항에 따라 순위가 매겨집니다.

select *,
   rank() over (partition by 班级
                 order by 成绩 desc) as ranking
from 班级表

이 SQL 문에서 select 절을 설명하겠습니다. 순위는 정렬 기능입니다. 요구 사항은 "각 클래스 내 등급별 순위"입니다.이 문장은

1) 각 클래스 내 : 클래스 별
파티션 테이블을 그룹화하는 데 사용됩니다. 이 예에서는 "클래스"그룹화 (클래스 별 파티션)를 지정합니다.
2) 등급별 순위
order by 절의 기능은 그룹화 된 결과를 정렬하는 것이며 기본값은 결과를 오름차순 (asc)으로 정렬하는 것입니다. 이 예에서 (등급 desc 별 순서) 등급 열을 기준으로 정렬되고 내림차순을 나타 내기 위해 desc 키워드가 추가됩니다.
다음 그림을 통해 분할 (그룹화) 및 순서 (그룹 내 정렬)의 역할을 이해할 수 있습니다.
여기에 사진 설명 삽입
분할 절이 생략되고 생략은 그룹화가 지정되지 않았 음을 의미합니다. 결과는 다음과 같지만 결과는 높음에서 낮음으로 정렬됩니다.

select *,
   rank() over (order by 成绩 desc) as ranking,
   dense_rank() over (order by 成绩 desc) as dese_rank,
   row_number() over (order by 成绩 desc) as row_num
from 班级表

여기에 사진 설명 삽입
여기에 사진 설명 삽입
여기에 사진 설명 삽입
5.
함수로서의 집계 함수 집계 및 창 함수의 사용법은 위에서 언급 한 전용 창 함수와 정확히 동일합니다. 집계 함수는 창 함수 위치에만 작성하면 되지만 함수 뒤의 괄호는 비워 둘 수 없습니다 . 집계를 지정해야합니다. 열 이름.

select *,
   sum(成绩) over (order by 学号) as current_sum,
   avg(成绩) over (order by 学号) as current_avg,
   count(成绩) over (order by 学号) as current_count,
   max(成绩) over (order by 学号) as current_max,
   min(成绩) over (order by 学号) as current_min
from 班级表

여기에 사진 설명 삽입
집계 기능은 윈도우 기능으로, 각 행의 데이터에서이 행의 데이터로 통계 데이터 (최대, 최소 등)가 무엇인지 직관적으로 볼 수 있습니다. 동시에 각 데이터 행이 전체 통계에 미치는 영향을 확인할 수 있습니다.

6. 창 기능 사용 시나리오
1) 다음과 같은 비즈니스 요구 사항 "각 그룹의 순위":
순위 문제 : 각 부서가 성능
문제 별로 topN 순위 : 각 부서 에서 상위 N 명의 직원을 찾아 보상

추천

출처blog.csdn.net/weixin_46801232/article/details/108669820