sql - 在 SQL 中按组计算移动平均值
问题描述
使用 SQL 我可以像这样计算移动平均线
SELECT id,date,var,AVG(var) OVER (ORDER BY UNIX_DATE(DATE(date)) RANGE BETWEEN 6 PRECEDING AND CURRENT ROW) AS var_mov_avg_7d
FROM table_name
WHERE id LIKE '2001'
但是我怎样才能为我表中的所有 id 单独执行此操作?
解决方案
你想要partition by
:
SELECT id,date,var,
AVG(var) OVER (PARTITION BY id
ORDER BY UNIX_DATE(DATE(date))
RANGE BETWEEN 6 PRECEDING AND CURRENT ROW
) AS var_mov_avg_7d
FROM table_name;
推荐阅读
- kubernetes - kubectl 突然询问用户名
- python - `set_index()` 不排序索引?
- amazon-web-services - 修复“用户:匿名无权执行”
- node.js - 通过代理将客户端标头、isp、geo 转发到服务器
- python - for循环中的Python过滤器函数
- javascript - JavaScript 对象自动排序
- flutter - 如何在 Dart Flutter 中使日期选择器“确定”和“取消”按钮文本变黑?
- python - Django:将 HTML(包含表单)解析为字典
- python - 如果网站默认只显示项目 1-50,则网页抓取
- sql-server - 如何只为每个部门显示一次评论?