获取给定期限内产品的最高价格日期(mysql)

时间:2020-09-07 00:52:40

标签: mysql join

我的MySQL价格表

+----------+-----+----------+
|product_id|price|date_at   |
+----------+-----+----------+
|   1      |41.50|2020-09-01|
|   1      |99.50|2020-09-02|
|   1      |41.50|2020-09-03|
|   1      |41.50|2020-09-04|
|   1      |41.50|2020-09-05|
|   1      |9.90 |2020-09-06|
+----------+-----+----------+

我可以得到今天和昨天的价格:

select today.price,
       yesterday.price as yesterday_price
from prices today
         left join prices yesterday on today.product_id = yesterday.product_id
where yesterday.date_at = '2020-09-05' <-- I need to have it dynamic
  and today.date_at = '2020-09-06'

我需要将昨天的日期设为N天(MAX(价格))以内的任何日期。

示例: 昨天。date_at=相同product_id的最近20天最高价格

也许我应该在左联接中而不是在哪里使用更多代码。 请告诉我如何更改查询。

1 个答案:

答案 0 :(得分:0)

显然,您要执行的操作是这样的:

SELECT MAX(price) FROM prices
WHERE date_at BETWEEN _from_date AND _to_date
      AND product_id = _product_id;

您必须硬键入参数(_from_date; to_date;和_product_id)。如果要使其动态化,就必须考虑编写等效的存储过程