2

時間枠内でユーザーごとの最大値を取得しようとしています。日付範囲は、2 週間前の別の時間範囲内での各ユーザーによる最初の出現によって決定されます。つまり、ユーザーが 10 月に最初に現れたのは 2018 年 10 月 1 日であるため、範囲は 2018 年 9 月 18 日からとなります。 2018-10-01 まで。その範囲内で、列の最大値を探しています。このデータはすべて同じテーブルから取得されます。

例:

+------------+------------+---------+
| 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  |
+------------+------------+---------+

10 月 1 日以降の最初の発生を含む 2 週間前のピーク値を探しています。ユーザー 1 の場合は 2018 年 10 月 1 日、ユーザー 2 の場合は 2018 年 10 月 2 日になります。ピーク値は 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 のその時間範囲で最大値を見つける最良の方法を知っている人はいますか?

4

1 に答える 1