SQL窗口函数完全指南:从基础概念到实战应用
创作时间:
作者:
@小白创作中心
SQL窗口函数完全指南:从基础概念到实战应用
引用
1
来源
1.
https://m.imooc.com/article/370130?block_id=tuijian_wz
SQL窗口函数是SQL语言中一个非常强大但经常被忽视的功能。它允许在查询中进行复杂的计算,如累积求和、时间序列分析和数据填充等。本文将通过多个实际案例,详细介绍窗口函数的基本概念和具体应用,帮助读者掌握这一重要工具。
照片由Marcus Woodbridge拍摄。
什么是窗口函数?
传统的SQL查询基于关系代数理论,其中表中的行被视为无序的元组集合。这意味着在标准SQL中,无法直接基于其他行的值进行计算。而窗口函数则突破了这一限制,允许在查询中引用其他行的数据,从而实现更复杂的分析功能。
基础案例与基本结构
1. 聚合但无聚合过程
窗口函数最直观的应用之一是无需进行表压缩就能完成聚合计算。例如,要计算一个支出表的总和,传统方法会使用GROUP BY:
SELECT SUM(value) AS total FROM myTable
而使用窗口函数,可以在保留原始行结构的同时添加聚合结果:
SELECT *, SUM(value) OVER() FROM myTable
2. 时间和排序意识
窗口函数特别适用于需要基于时间序列或排序顺序进行计算的场景。例如,计算每年的身高增长:
SELECT 年份, 高度, LAG(高度) OVER (ORDER BY 年份) AS 上一年度高度 FROM myTable
3. 时间感知与整合
通过结合PARTITION BY和ORDER BY,窗口函数可以处理更复杂的分组和排序需求。例如,计算每个孩子的年度身高增长率:
SELECT 1 - 身高 / LAG(身高) OVER (PARTITION BY 名称 ORDER BY 年) ...
4. 排名与位置
窗口函数还包括专门用于排名的函数,如ROW_NUMBER():
SELECT ROW_NUMBER() OVER(ORDER BY score) -- 计算行号并按分数排序
5. 窗口尺寸
窗口函数还支持定义计算范围,即只考虑当前行及其前后指定数量的行。例如,计算三天内的平均病例数:
SELECT AVG(n_cases) OVER (
ORDER BY date_reference
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
)
实际应用场景
累积总和随时间变化
计算每月累计收入:
日志表中的事件时长
处理日志表中的事件持续时间:
填充缺失值
使用窗口函数填充数据表中的缺失值:
基于一组列的行去重
去除重复数据:
计算组或类在总行数中所占的百分比
计算各类别所占比例:
总结
窗口函数是SQL语言中一个强大但常被忽视的功能。通过本文的介绍,希望读者能够理解窗口函数的基本概念和应用场景,并能够在实际工作中灵活运用这一工具。虽然SQL可能看起来有些“古老”,但它仍然是数据处理领域不可或缺的工具,掌握其高级功能将为数据处理工作带来极大的便利。
参考文献
- PostgreSQL窗口函数的数据处理任务. (n.d.). Timescale.链接.
- Kho, J. (2022年6月5日). 高级SQL窗口函数的简易指南 — 数据科学.Medium.
- Markingmyname. (2023年11月16日).Transact-SQL中的分析功能 — SQL Server.Microsoft Learn.
- PostgreSQL教程. (2021年4月27日).PostgreSQL窗口函数完整指南.链接.
- VanMSFT. (2023年5月23日).OVER子句 (Transact-SQL) — SQL Server.Microsoft Learn.
- 窗口函数. (n.d.).SQLite官方文档.
- 窗口函数. (2014年7月24日).PostgreSQL官方文档.
本文中的所有图片均由作者制作。
热门推荐
让你的照片“活”起来!局部特写与构图技巧,让你的照片与众不同!
敏感肌粉底液:洋甘菊&芦荟的秘密
一文读懂血液检查:关键指标解读与异常预警
智慧交通管理项目有哪些
潮汕家庭过年必备仪式感:从除夕到初七的习俗与文化
潮汕春节:一场穿越千年的文化盛宴
新能源车长途自驾游,这些技巧你必须知道!
五一自驾游,米其林轮胎+博世电瓶帮你搞定!
春节自驾游打卡龙游石窟和平潭岛
威海五一游玩攻略:打卡刘公岛、华夏城
美联储降息周期下的全球金融动荡
威海绝美打卡地,随手一拍就是大片!
威海4天3晚完美体验:打卡热门景点
《亲密的奥黛丽·赫本》展:一场跨越时空的心灵对话
“一把十手”倒放的秘密:一个意外走红的语音梗
热巴舞与卓舞闪耀拉萨春晚分会场:布达拉宫见证西藏文化魅力
布达拉宫前的歌声:才旦卓玛与西藏文化的魅力绽放
川藏线自驾游美食地图大揭秘!
春日江心屿野餐攻略:特色美食+最佳地点推荐
成都自驾游:美食美景全攻略
台州到福州自驾游美食攻略:从泡虾到肉燕的美食之旅
荣昌小区改造:打造健康生活新标杆
临沧到大理旅行全攻略
国家电网推荐:私家充电桩安装全攻略
十手:从中国传入日本的警卫神器
冬季自驾游:自贡到九寨沟的绝美路线推荐
冬游打卡!自贡+九寨童话世界
自贡到九寨沟:恐龙博物馆与人间仙境的深度游
四川自驾游:自贡到九寨沟的绝美风景线
明天大扫除,老人说“七扫金、八扫银,五福跟进门”,早看早知道