【问题标题】:How can we compare data with previous date data in mysql query我们如何在mysql查询中将数据与以前的日期数据进行比较
【发布时间】:2020-09-25 00:23:25
【问题描述】:

请任何人帮助我编写 sql 查询,将过滤后的数据与以前的日期值进行比较。

例如

symbol  date        pivot   
SBIN    2020-06-05  184.533 
SBIN    2020-06-04  174.4   
SBIN    2020-06-03  175.6   
SBIN    2020-06-02  169.583 
SBIN    2020-06-01  168.267 
SBIN    2020-05-29  159.467 
SBIN    2020-05-28  159.1   
SBIN    2020-05-27  156.733 
SBIN    2020-05-26  151.6   
SBIN    2020-05-22  151.967 
SBIN    2020-05-21  153.2   
SBIN    2020-05-20  153.267 

如果前一天的枢轴小于当天的枢轴,我需要查询以查找股票列表

【问题讨论】:

  • 你能提供一个你想要的输出示例吗?
  • 您的日期列类型是什么?
  • 日期列类型为日期

标签: mysql sql date select window-functions


【解决方案1】:

如果您运行的是 MySQL 8.0,您可以为此使用窗口函数:

select t*
from (
    select t.*, lag(pivot) over(order by symbol order by date) lag_pivot
    from mytable t
) t
where pivot < lag_pivot

这将为您提供“先前”pivot 大于当前行的所有行(以及先前枢轴的值,在列 lag_pivot 中)。

在早期版本中,一种方法是关联子查询:

select t*
from (
    select 
        t.*, 
        (
            select t1.pivot 
            from mytable t1 
            where t1.symbol = t.symbol and t1.date < t.date
            order by t1.date desc limit 1
        ) lag_pivot
    from mytable t
) t
where pivot < lag_pivot

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多