Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Permintaan lambat:temukan perbedaan antara nilai berdasarkan min dan maks pada kolom lain untuk setiap grup

Jika saya mengerti dengan benar, Anda ingin perbedaan antara dua baris terbaru untuk setiap fix_id di mana type = 'avg' .

Jika demikian, saya akan menyarankan variabel dan agregasi bersyarat:

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. Cara sempurna untuk menggunakan pembaruan/penyimpanan data MySQL tanpa jeda dan kesalahan saat memperbarui statistik

  2. Praktik terbaik penghapusan lunak (PHP/MySQL)

  3. Pencarian MySQL dan mengganti beberapa teks di bidang

  4. Bagaimana saya bisa memilih baris dalam urutan terbalik di MySQL?

  5. Memindahkan file mysql melintasi server