Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql - Porównaj wartości z ciągów dla daty=n z datą=n-1

Jeśli używasz MySQL 8.0, możesz użyć 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

Jeśli potrzebujesz filtrować według określonej daty, możesz to zrobić w zewnętrznym zapytaniu:

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'

Pamiętaj, że date i rank są nazwami funkcji MySQL, dlatego nie są dobrym wyborem dla nazw kolumn. Zmieniłem nazwy kolumn w zapytaniu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak porównywać wydajność Moodle?

  2. BŁĄD:Błąd instalacji mysql2:BŁĄD:Nie udało się zbudować rozszerzenia natywnego gem

  3. Próba połączenia ze zdalnym hostem MySQL (błąd 2003)

  4. Projekt bazy danych do grupowania

  5. Aktualizacja za pomocą oświadczenia PDO