Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

mysql - So sánh các giá trị từ chuỗi cho date =n với date =n-1

Nếu bạn đang chạy MySQL 8.0, bạn có thể sử dụng 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

Nếu bạn cần lọc vào một ngày nhất định, bạn có thể thực hiện việc đó trong một truy vấn bên ngoài:

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'

Xin lưu ý rằng daterank là tên của các hàm MySQL, do đó không phải là lựa chọn tốt cho tên cột. Tôi đã đổi tên các cột trong truy vấn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gọi đến thủ tục được lưu trữ, khi tên thủ tục trong một biến trong mysql

  2. Các đối tượng của bộ truy vấn Django trả về Không có thay vì 0 mặc dù cơ sở dữ liệu có 0 được lưu trữ dưới dạng giá trị trường

  3. Vòng lặp While trong PHP chỉ hiển thị hàng cuối cùng

  4. MySQL:Không thể đặt tên cho bảng trong trường hợp Upper Camel (Pascal Case)

  5. Cách sử dụng Hibernate eqOrIsNull ()