Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

mysql - Compara valores de strings para data=n com data=n-1


Se você estiver executando o MySQL 8.0, você pode usar lag() :
select
    dte,
    country,
    sport,
    rnk,
    lag(rnk) over(partition by country, sport order by dte) rnk_1,
    lag(rnk) over(partition by country, sport order by dte) - rnk rank_diff
from mytable

Se você precisar filtrar em uma determinada data, poderá fazê-lo em uma consulta externa:
select *
from (
    select
        dte,
        country,
        sport,
        rnk,
        lag(rnk) over(partition by country, sport order by dte) rnk_1,
        lag(rnk) over(partition by country, sport order by dte) - rnk rank_diff
    from mytable
) t
where dte = '2000-01-31'

Observe que date e rank são nomes de funções do MySQL, portanto, não é uma boa escolha para nomes de colunas. Renomeei as colunas na consulta.