sql—如何将数据与mysql查询中以前的日期数据进行比较

hfyxw5xn  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(334)

请任何人帮我写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

我需要查询,以找到股票的名单,如果上一天的数据透视小于当天的数据透视

iszxjhcz

iszxjhcz1#

如果您运行的是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

相关问题