sql >> Databáze >  >> RDS >> Mysql

mysql - Porovnejte hodnoty z řetězců pro date=n s datem=n-1

Pokud používáte MySQL 8.0, můžete použít 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

Pokud potřebujete filtrovat k danému datu, můžete to udělat ve vnějším dotazu:

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'

Vezměte prosím na vědomí, že date a rank jsou názvy funkcí MySQL, a proto nejsou dobrou volbou pro názvy sloupců. Přejmenoval jsem sloupce v dotazu.



  1. Přístup k databázím kontejneru docker mysql

  2. Tipy k tabulce Microsoft Access – triky a pokyny, část 5

  3. Rychlý tip MySQL:Použití funkcí LENGTH a TRIM

  4. Mám se vyhnout COUNT dohromady v InnoDB?