sql >> Base de Datos >  >> RDS >> Mysql

mysql - Compara valores de cadenas para date=n con date=n-1

Si está ejecutando MySQL 8.0, puede 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

Si necesita filtrar en una fecha determinada, puede hacerlo en una 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'

Tenga en cuenta que date y rank son nombres de funciones de MySQL, por lo tanto, no es una buena opción para los nombres de columna. Cambié el nombre de las columnas en la consulta.