Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql - Сравнете стойности от низове за дата=n с дата=n-1

Ако използвате MySQL 8.0, можете да използвате 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

Ако трябва да филтрирате на дадена дата, можете да го направите във външна заявка:

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'

Моля, имайте предвид, че date и rank са имена на MySQL функции, следователно не е добър избор за имена на колони. Преименувах колоните в заявката.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да представим кръстосано прилагане и разделен низ в MySQL

  2. Вземете най-добрия(и) голмайстор(и) в MySQL

  3. напишете заявка, която се прилага за цял db вместо към таблица

  4. Проблеми при сравнение на MySQL с плаваща запетая

  5. Търся съвет относно заявка за сродни видеоклипове в маркирана видео система