SQL知识之窗口函数

本文详细介绍了SQL中的窗口函数,包括累计计算窗口函数、排序窗口函数、切分窗口函数、偏移窗口函数以及first_value()和last_value()。通过实例解析了window function在分组、排序、移动平均等场景的应用。
摘要由CSDN通过智能技术生成


前言:窗口函数属于SQL的高级查询功能,有些数据库的低版本可能还不支持,如MySQL5.7版本暂不支持,SQL Server是支持的。

1、窗口函数的简单介绍
  • 窗口函数即 Window Function,也称为OLAP函数,意思是对数据库数据进行实时分析处理。窗口函数就是为了实现OLAP而添加的标准SQL功能。
  • 窗口函数与聚合函数类似,但是每一行数据都生成一个结果。
  • 聚合函数可以将多行数据按照规定聚合为一行,一般来说聚合后的行数要少于聚合前的行数,但是有时我们想要既显示聚合前的数据,又要显示聚合后的数据,这时便引入了窗口函数。
  • 窗口函数在SELECT时执行的,位于ORDER BY之前。
2、累计计算窗口函数
2.1 普通累计
  • 适用于聚合函数,如 sum() over(partition by … order by …)
  • partition by 起到了分组的作用
  • order by 按照什么顺序进行累加,升序ASC、降序DESC,默认升序
# 以年为分组,按月份累加计算营业额
SELECT month,
		amount,
		sum(amount) over (partition by year order by month)
FROM trade
2.2 移动累计
  • 普通累计基础上加上限制计算移动平均的范围,如移动的累计求近三个月营业额的情况
  • sum() over(partition by … order by …rows between… preceding… and…following)
  • rows between:包含的行
  • preceding:前面的行;unbounded preceding:前面的所有行
  • following:后面的行;unbounded following:后面的所有行
rows between unbounded  preceding and current row   # 包括本行和之前的所有行
rows between 3  preceding and current row       # 包括本行以内和前三行
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值