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

Truy vấn chậm:tìm sự khác biệt giữa các giá trị dựa trên giá trị tối thiểu và tối đa trên một cột khác cho mỗi nhóm

Nếu tôi hiểu chính xác, bạn muốn có sự khác biệt giữa hai hàng gần đây nhất cho mỗi fix_id trong đó type = 'avg' .

Nếu vậy, tôi sẽ đề xuất các biến và tập hợp có điều kiện:

select fix_id,
       max(case when rn = 1 then odds end) as odds,
       max(case when rn = 1 then market end) as market,
       max(case when rn = 1 then away end) as away,
       sum(case when rn = 1 then odds when rn = 2 then - odds end) as diff,
       max(type) as type
from (select ao.*,
             (@rn := if(@f = fix_id, @rn + 1,
                        if(@fn := fix_id, 1, 1)
                       )
             ) as rn
      from (select ao.*
            from average_odds ao
            where type = 'avg'
            order by ao.fix_id, ao.updated desc
           ) ao cross join
           (select @f := -1, @rn := 0) params
     ) ao
where rn <= 2
group by fix_id;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hiển thị kết quả truy vấn SQL trong php

  2. Bảng MySQL lớn

  3. cách thay đổi định dạng dấu thời gian trong mysql

  4. Phân cấp danh mục (PHP / MySQL)

  5. Lỗi kết nối MySQL 8.0.11 do caching_sha2_password