sql窗口函数
什么是SQL窗口函数?
SQL窗口函数是一种SQL语句中的函数,可以对一组行执行计算操作,而无需将这些行分组聚合。
SQL窗口函数的语法
SQL窗口函数的语法由三部分组成:
1. 窗口函数本身
2. OVER子句
3. 窗口定义
如下所示:SELECT window_function_name(argument) OVER ( [PARTITION BY partition_expression, ... ] [ORDER BY sort_expression [ASC|DESC], ... ] [frame_clause] )FROM table_name;
窗口函数的种类
SQL窗口函数可以分为以下四个不同的类别:
1. 常规聚合函数
2. 排序函数
3. 移动函数
4. 统计函数
常见的常规聚合函数包括SUM、AVG、COUNT、MAX和MIN;排序函数包括RANK、DENSE_RANK和NTILE;移动函数包括LEAD和LAG;统计函数包括CORR和COVAR。
OVER子句
OVER子句定义了窗口函数所作用的窗口,语法如下:OVER ( [PARTITION BY partition_expression, ... ] [ORDER BY sort_expression [ASC|DESC], ... ] [frame_clause])
PARTITION BY子句将窗口分为多个分区,ORDER BY子句定义了分区内的行顺序排序方式,frame_clause定义了基于当前行的偏移量的窗口边界。
使用SQL窗口函数的例子
以下是SQL窗口函数的例子:SELECT customer_id, transaction_date, amount, SUM(amount) OVER (PARTITION BY customer_id ORDER BY transaction_date) AS running_totalFROM transactionsORDER BY customer_id, transaction_date;
此查询将按顾客ID和交易日期对交易进行分组,并对每个顾客的交易按日期排序。 然后,它将对每个顾客的交易求和,并计算每个交易的累积总和。