【发布时间】:2019-05-07 13:25:25
【问题描述】:
假设我有一张桌子:
---------------
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
【问题讨论】:
-
请包含您的预期输出,即您希望看到的内容。
-
我认为你的 where 子句是错误的。它应该类似于: where date > current_date - interval '90 days'
-
您的 WHERE 令人困惑。 DATE 不能大于 SAME DATE - 90
标签: sql postgresql max