【问题标题】:Fetch products with same price for last x days获取最近 x 天价格相同的产品
【发布时间】:2019-02-28 12:22:28
【问题描述】:

我想获取那些在 MYSQL 中连续 5 天报告相同价格的产品。我在下面附上了示例数据供您参考。

PID Price   Date
P1  10  25-09-2018
P1  10  24-09-2018
P1  10  23-09-2018
P1  10  22-09-2018
P1  10  21-09-2018
P2  25  25-09-2018
P2  25  24-09-2018
P2  30  23-09-2018
P2  25  22-09-2018
P2  25  21-09-2018
P3  50  25-09-2018
P3  48  22-09-2018
P4  15  23-09-2018
P4  15  21-09-2018

所需的输出应该是

PID Price
P1  10
P4  15

提前致谢。

【问题讨论】:

  • 欢迎来到 Stack Overflow!请阅读页面How to ask a good question 并相应地调整您的页面。主要通常希望您添加当前工作的代码。谢谢!
  • 能否请您澄清一下您使用的是 MySQL 还是 Redshift?这些是不同的系统,答案可能会有所不同。
  • 为什么P4 包含在您所需的输出中?仅在输入数据中出现两天(21&23),不满足“最近5天连续同价”的要求。
  • Redshift 当然是基于 postgreSQL,而不是 MySQL。所以两者是非常不同的。请edit您的标签告诉我们是哪一个。另外,请告诉我们您使用的 DBMS 版本。这是相关的,因为较新的版本具有窗口函数,使这种查询更容易。

标签: mysql amazon-redshift


【解决方案1】:

使用您的示例数据,您可以尝试类似于下一个伪 MySQL 查询的查询:

SELECT
    Column_PID,
    Column_Price,
FROM
    the_table
WHERE
    Column_Date >= (NOW() - INTERVAL 4 DAY)
GROUP BY
    Column_PID, Column_Price
HAVING count(Column_Date) >= 5

【讨论】:

    【解决方案2】:
    • 使用Correlated subquery,为每个PIDdate(上一日期的价格)确定一个“previous_price”。

    • 仅考虑过去 5 天的数据(您可以使其可变)。

    • 使用Derived tables并在PID上分组,过滤(使用Having子句),其中MINMAX的变化为0。

    使用以下查询:

    SELECT inner_nest.PID, 
           MAX(inner_nest.Price) AS Price 
    FROM 
    (
      SELECT t1.PID, t1.Price, 
             (SELECT t2.Price 
              FROM your_table AS t2 
              WHERE t2.PID = t1.PID 
                AND t2.date < t1.date 
              ORDER BY t2.date DESC LIMIT 1) AS previous_price  
      FROM your_table AS t1 
      WHERE DATEDIFF( NOW(), t1.date ) < 5
    ) AS inner_nest 
    GROUP BY inner_nest.PID 
    HAVING MIN(inner_nest.Price - inner_nest.previous_price) = 0 
       AND MAX(inner_nest.Price - inner_nest.previous_price) = 0 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-16
      • 2021-06-08
      • 2015-11-05
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多