Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql - Werte aus Strings für date=n mit date=n-1 vergleichen

Wenn Sie MySQL 8.0 ausführen, können Sie lag() verwenden :

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

Wenn Sie nach einem bestimmten Datum filtern müssen, können Sie dies in einer äußeren Abfrage tun:

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'

Bitte beachten Sie das date und rank sind Namen von MySQL-Funktionen und daher keine gute Wahl für Spaltennamen. Ich habe die Spalten in der Abfrage umbenannt.