【发布时间】:2012-11-20 21:20:00
【问题描述】:
我有一个包含 2 列的表格,日期和金额。我希望能够找到 x 天的数量峰值。因此,如果我有下表并且正在寻找 3 天的峰值,这意味着该日期的金额高于之前或之后 3 天的任何一天,那么将选择该日期。
date amount
2012-09-04 | 53137.47
2012-09-05 | 53137.2
2012-09-06 | 53137.54
2012-09-07 | 53138.58
2012-09-10 | 53138.73
2012-09-11 | 53138.28
2012-09-12 | 53138.22
2012-09-13 | 53138.48
2012-09-14 | 53140.14
2012-09-17 | 53139.82
2012-09-18 | 53139.86
2012-09-19 | 53140.01
2012-09-20 | 53139.75
2012-09-21 | 53139.82
2012-09-24 | 53139.01
2012-09-25 | 53138.93
2012-09-26 | 53138.48
2012-09-27 | 53138.83
2012-09-28 | 53138.62
应该选择 2012-09-10, 2012-09-14
我尝试过使用联接和派生表,但似乎无法正常工作。
尝试了以下方法:
select * from a WHERE
amount=(select MAX(amount) from a where
date<date_add(date,interval 3 day) and
date>date_sub(date,interval 3 day));
和
SELECT a1.*
FROM a AS a1
JOIN a AS a2 ON
(select * from a1 where
a2.DATE < a1.DATE + 3 and
a2.DATE > a1.DATE - 3) myalias
WHERE a1.amount > a2.amount;
【问题讨论】:
-
是以 +/- 3 个日历日的间隔(如您的查询尝试所示)或表格中连续 +/- 3 个日期的间隔(如所示)计算的最大值通过从您想要的结果中排除 2012-09-19)?
-
我的意思是根据表格中的连续日期进行计算,现在我发现我没有这样做。
标签: mysql sql date-range