论如何使用SQL窗口函数实现跨行计算

您所在的位置:网站首页 求年龄的公式year函数 论如何使用SQL窗口函数实现跨行计算

论如何使用SQL窗口函数实现跨行计算

2023-05-20 04:21| 来源: 网络整理| 查看: 265

什么是窗口函数

窗口函数(Window Function)为每行数据进行一次计算:操作多行数据(一个窗口),返回一个值。

普通聚合函数只能用来计算一行内的结果,或把所有行聚合成一行结果。窗口函数则可以跨行计算,并把结果填到到每一行中。

为什么需要窗口函数

窗口函数是SQL2003标准中定义的新特性,主流数据库都有对窗口函数的支持。

窗口函数又被称为OLAP函数,在报表分析的查询中发挥了重要作用。

窗口函数能解决普通函数和聚合函数没法直接完成的事情,加快数据的分析。

在鸿鹄中如何使用窗口函数

语法

PARTITION BY:表示数据先按照partition_by_list进行分区

ORDER BY:表示在各个分区内按照order_by_list进行排序

ROWS BETWEEN:表示在计算的时候选取的行,例如下面的示例选取当前行和前一行

其中frame_start/frame_end的语法为:

在没有指定窗口框架子句(frame_clause)的情况下,默认的frame和是否有ORDER BY有关

有ORDER BY,默认的frame包含从当前分区开始到当前行,等价于:

没有ORDER BY,默认的frame包含当前分区的所有行,等价于:

窗口函数分类

窗口函数主要分为聚合和非聚合两大类:

窗口函数的最佳实践

以下数据集ev_sales是新能源汽车厂商nio和xp在2022年1-5月的销量数据,下面的示例是基于此数据集演示窗口函数在查询分析中用法。

需求:查看厂商每个月的累积销量

需求:计算每个月环比增速

其他参考资料

SQL Window Functions Introduction

 3.5. Window Functions



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3