sql - ID、日期和最近 x 天的最大值
问题描述
假设我有一张桌子:
---------------
id | date | value
------------------
1 | Jan 1 | 10
1 | Jan 2 | 12
1 | Jan 3 | 11
2 | Jan 4 | 11
我需要获取过去 90 天内每个 id、每个日期、每个日期的最大值和中值。我使用查询:
select id, date, value
max(value) over (partition by id, date) as max_date,
median(value) over (partition by id, date) as med_date
from table
where date > date - interval '90 days'
我尝试导出数据并手动检查,但结果不正确。我错过了什么?谢谢
预期输出是自最近 90 天以来的最大值。例如日期是 4 月 5 日,那么它将找到从 1 月 5 日(过去 90 天)到 4 月 5 日的最大值。然后日期移动到 4 月 6 日,然后它将在 1 月 6 日到 4 月 6 日再次执行,依此类推每个 ID
解决方案
所以我假设你可以获得相同 ID 和日期的多个值,对吗?否则对 id 和 date 进行分区是没有意义的
SELECT id, date, max(value), avg(value) from table where date > date - interval '90 days'
group by id, value
'group by' 进行分区
推荐阅读
- mysql - 需要查询来获取 BI 发布器中参数的工作表管理器层次结构?
- c# - 使用 Moq 测试 api CRUD 操作
- javascript - 如何在 Meteor 中查询具有满足条件的子文档的文档?
- r - 查找特定单元格
- javascript - Chai-http:发送 204 状态而不是预期状态
- angular - 带有 ASP .Net Core 2.1 的 Angular 6 SSR:未定义窗口
- c# - 如何使用 selenium C# 访问 HTML 表
- java - 将 angular2-query-builder 查询转换为逻辑表达式
- android - 使用变量时的 Gradle 库版本建议
- java - 位图“图像”传递给另一个活动(内存不足)