聚合函数结合窗口函数可在保留每行数据的同时进行分组分析。1. 使用SUM、AVG等配合OVER(PARTITION BY)将分组结果广播到每行,如显示部门总工资;2. 计算个人与组内均值的差值,用于绩效对比;3. 求占比指标,如个人工资占部门总额的比例,需注意数值类型避免整除;4. 结合ORDER BY实现累计计算,如按日期累加收入。核心是聚合函数通过OVER子句实现行级展示组内统计,无需JOIN或子查询,提升效率与可读性。

聚合函数和窗口函数结合使用,可以在保留原始行数据的同时,基于分组聚合结果进行更复杂的分析。关键在于将聚合函数作为窗口函数的一部分,使用 OVER() 子句定义其作用范围。
1. 聚合函数作为窗口函数使用
把 SUM、AVG、COUNT 等聚合函数放在 OVER(PARTITION BY …) 中,就能按组计算聚合值,并广播到每一行。
例如:统计每个部门员工的工资总额,并显示在每行记录中:
SELECT name, dept, salary,
SUM(salary) OVER(PARTITION BY dept) AS total_dept_salary
FROM employees;
这样每行都会显示该员工所在部门的总工资,而不会像 GROUP BY 那样只返回一行。
2. 对比个人与组内平均值
常用于找出哪些员工高于或低于部门平均水平。
SELECT name, dept, salary,
salary – AVG(salary) OVER(PARTITION BY dept) AS diff_from_avg
FROM employees;
这个查询展示每个人工资与部门均值的差额,适合做绩效分析。
3. 计算占比类指标
结合聚合窗口函数可以轻松算出占比,比如某员工工资占部门总工资的比例。
DELPHI控件属性、方法、事件及常用函数 word文档 doc格式
DELPHI控件属性、方法、事件及常用函数 一. TmainMemu控件 该控件是一个标准的菜单控件,运用它为窗口提供菜单。该对象的层次结构为:TObject—TPersistent–TCompoment—TMenu。 属性 1-AutoMetge:Boolean 功能:用于确定非MID程序中非主Form上的菜单要不要和主Form的菜单合并。主Form菜单AutoMerge的特性总是False。此外,还要设置菜单项的GroupIndex属性。 2-BiDiMode
0 查看详情
SELECT name, dept, salary,
 >salary * 100.0 / SUM(salary) OVER(PARTITION BY dept) AS percent_of_dept
FROM employees;
注意乘以 100.0 是为了防止整数除法导致小数丢失。
4. 结合排序实现动态累计
在时间序列分析中,常用 SUM 配合 ORDER BY 实现累计求和。
SELECT date, revenue,
SUM(revenue) OVER(ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cum_revenue
FROM daily_sales;
这会逐日累加收入,形成趋势线。加上 PARTITION BY 还可按年/月分区累计。
基本上就这些常见用法。核心是理解:聚合函数 + OVER = 每行都能看到组内汇总信息。这种写法避免了子查询和 JOIN,代码更简洁,性能也通常更好。
以上就是SQL 聚合函数和窗口函数怎么结合使用?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/957169.html
微信扫一扫
支付宝扫一扫