我试图在一个时间范围内获得每个用户的最大值。日期范围由每个用户在单独的时间范围内的第一次出现和前 2 周确定,即用户在 10 月首次出现的时间是 2018 年 10 月 1 日,因此范围是从 2018 年 9 月 18 日至 2018 年 10 月 1 日。在该范围内,我正在寻找一列的最大值。所有这些数据都来自同一张表。
例子:
+------------+------------+---------+
| Profile_ID | Date | Value |
+------------+------------+---------+
| 1 | 2018-10-05 | 100 |
| 2 | 2018-10-02 | 50 |
| 2 | 2018-10-04 | 78 |
| 2 | 2018-10-05 | 56 |
| 1 | 2018-10-08 | 110 |
| 1 | 2018-10-01 | 99 |
| 2 | 2018-09-30 | 88 |
| 1 | 2018-09-27 | 106 |
+------------+------------+---------+
我正在寻找在 OCT 1 之前的两周(包括 OCT 1 之后的第一次出现)的峰值 VALUE。对于用户 1 而言,这将是 2018-10-01,对于用户 2,将是 2018-10-02。然后峰值将是 106和 88,分别。
我尝试了代码:
SELECT max(Value)
FROM table
WHERE Date BETWEEN (
SELECT (min(Date) - INTERVAL 2 week)
FROM table
WHERE stamp between '2018-10-01' AND '2018-10-25'
GROUP BY profile_id
)
AND
(
SELECT min(Date)
FROM table
WHERE stamp between '2018-10-01' AND '2018-10-25'
GROUP BY profile_id
)
我收到一个错误:
语法错误:在“2”处或附近
但我认为这只是我问题的开始。有谁知道在该时间范围内为每个 profile_id 找到最大值的最佳方法?