【SQL】SQL常见窗口函数整理汇总大全(用到over的场景)

〇、概述

1、常用网站

SQL窗口函数:https://blog.csdn.net/liangmengbk/article/details/124253806

2、介绍

像聚合函数一样对一组数据进行分析并返回结果

3、与聚合函数的不同

聚合函数将一组数据汇总成单个结果,窗口函数为每一行数据都返回一个结果

一、窗口函数组成

(一)语法

窗口函数()  over(partition by xxx order by yyy  frame_clause)

frame_clause:框架子句,即窗口范围

(二)标识窗口-over

OVER子句用于指定一个数据分析的窗口,表明是一个窗口函数

括号内为空,表示将所有数据作为一个分组进行汇总

(三)分区-PARTITION BY

PARTITION BY用于定义分区,类似于查询语句中的GROUP BY子句

(四)排序-ORDER BY

ORDER BY用于指定分区内数据的排序方式,类似于查询语句中的ORDER BY子句

(五)指定窗口大小

frame_clause选项用于指定一个移动的分析窗口

窗口函数不再基于分区进行分析,而是基于窗口内的数据进行分析。

ROWS表示以数据行为单位计算窗口的偏移量,RANGE表示以数值(例如10天、5km等)为单位计算窗口的偏移量。

frame_start和frame_end分别定义窗口的起始位置和结束位置

窗口大小选项的定义:

如:

ROWS

  RANGE INTERVAL '5' DAY PRECEDING

  BETWEEN UNBOUNDED PRECEDING

  AND

   CURRENT ROW

二、窗口函数分类

(一)聚合窗口函数

常见的聚合函数可以做窗口函数,如AVG()、SUM()、COUNT()、MAX()以及MIN()等

(二)排序窗口函数

对数据进行分组排名,包括ROW_NUMBER()、RANK()、DENSE_RANK()、PERCENT_RANK()、CUME_DIST()以及NTILE()等函数。

使用窗口函数按照dt升序进行排序

row_number 排序结果是 1、2、3、4……

rank 排序结果是 1、2、2、4……

dense_rank 排序结果是 1、2、2、3…… 

(三)取值窗口函数

用于返回指定位置上的数据行,包括FIRST_VALUE()、LAST_VALUE()、LAG()、LEAD()、NTH_VALUE()等函数。

如:NTH_VALUE(use_time,2) OVER(PARTITION BY exam_id ORDER BY use_time ASC) AS min_use_time 

posted @ 2022-08-17 09:31  哥们要飞  阅读(270)  评论(0编辑  收藏  举报