sql >> Database >  >> RDS >> Mysql

mysql - Vergelijk waarden van strings voor date=n met date=n-1

Als u MySQL 8.0 gebruikt, kunt u lag() . gebruiken :

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

Als u op een bepaalde datum moet filteren, kunt u dit doen in een buitenste zoekopdracht:

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'

Houd er rekening mee dat date en rank zijn namen van MySQL-functies, dus geen goede keuze voor kolomnamen. Ik heb de kolommen in de zoekopdracht hernoemd.



  1. SELECT query retourneer 1 rij van elke groep

  2. Interval converteren naar minuten

  3. Voer het .sql-bestand uit in Python met MySQLdb

  4. Hoe vindt u de MySQL-databaselocatie op uw harde schijf?