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

Posted 哥们要飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLSQL常见窗口函数整理汇总大全(用到over的场景)相关的知识,希望对你有一定的参考价值。

〇、概述

1、常用网站

2、介绍

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

3、与聚合函数的不同

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

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

一、窗口函数组成

(一)语法

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

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

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

(二)标识窗口-over

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

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

(三)分区-PARTITION BY

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

(四)排序-ORDER BY

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

(五)指定窗口大小

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

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

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

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

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

窗口大小选项的定义:

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

如:

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 

作者:哥们要飞



以上是关于SQLSQL常见窗口函数整理汇总大全(用到over的场景)的主要内容,如果未能解决你的问题,请参考以下文章

SQL数据分析之窗口排序函数rankdense_rankraw_number与laglead窗口偏移函数用法整理

SQLSQL汇总

SQLSQL汇总

hive窗口函数总结

MySQL实现常用分析函数

Oracle-分析函数之sum(...) over(...)