sql - 如何将相同的多个窗口函数组合为一个,并在查询中需要时通过别名调用?
问题描述
如何解决在单个 SQL 查询中针对不同聚合多次使用相同窗口函数的问题?有什么方法可以给它取别名并在查询中根据需要多次调用它。
我尝试使用 'Window' 子句,但 SQL Server 当前不支持 'Window' 子句。
select empid, qty,
sum(qty) over (partition by empid order by month rows between unbounded preceding and current row) as running_sum,
avg(qty) over (partition by empid order by month rows between unbounded preceding and current row) as running_avg,
min(qty) over (partition by empid order by month rows between unbounded preceding and current row) as running_min,
max(qty) over (partition by empid order by month rows between unbounded preceding and current row) as running_max
from employee
有没有办法消除代码中的冗余?
解决方案
不在 SQL Server 中,ANSI SQL 支持WINDOWS
用于定义可重复使用的窗口的子句。但是,SQL Server 不支持它。
我认为您可以稍微简化您的逻辑:
select empid, qty,
sum(qty) over (partition by empid order by month) as running_sum,
avg(qty) over (partition by empid order by month) as running_avg,
min(qty) over (partition by empid order by month) as running_min,
max(qty) over (partition by empid order by month) as running_max
from employee;
推荐阅读
- java - 如何在 Java *with Flutter* 中禁用证书验证?
- xml - Ansible XML - 仅检索匹配的值
- node.js - 如何在带参数的路由中使用正则表达式?
- node.js - 使用 API 密钥 NodeJS 将视频上传到 Youtube
- css - 在 ios 14.6 中选择下拉菜单?
- php - php 中的 CURL 在我的页面中返回显示文本
- java - map.replace() 和 map.put() 用于在 Collection Framework 中更新 Map 中的值的区别
- python - 原型编译器在 MacOS Big Sur 上失败
- excel - Excel Marco - 如何组合和命名数据集
- javascript - 使用单个 nginx 服务器运行多个 Web 应用程序