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

Bagaimana saya bisa mendapatkan perbedaan antara nilai maksimum individu dari hari yang berbeda?

Pembaruan 1:Ini biola, http://sqlfiddle.com/#!2/818ad /2 , yang saya gunakan untuk pengujian.
Pembaruan 2:Ini adalah biola, http://sqlfiddle.com/#!2/3f78d/10 yang saya gunakan untuk penyempurnaan/perbaikan lebih lanjut, berdasarkan komentar Sandy.
Pembaruan 3:Untuk beberapa alasan kasus di mana tidak ada hari sebelumnya tidak ditangani dengan benar. Saya pikir itu. Namun, saya telah memperbarui untuk memastikan itu berfungsi (agak rumit--tetapi tampaknya benar. Biola terakhir:http://sqlfiddle.com/#!2/3f78d/45

Saya pikir @Grijesh secara konseptual memberi Anda hal utama yang Anda butuhkan melalui self-join dari data input (jadi pastikan Anda memilih jawabannya!). Saya telah membersihkan kuerinya sedikit pada sintaks (membangun dari kuerinya!):

SELECT
DATE(t1.`Production_date`) as theDate,
MAX( t1.`bundle_count` ) AS  'max(bundle_count)',
MAX( t1.`bundle_count` ) - 
    IF(
       EXISTS
           (
            SELECT date(t2.production_date)
            FROM input_example t2
            WHERE t2.machine_no = 1 AND 
                  date_sub(date(t1.production_date), interval 1 day) = date(t2.production_date)
        ),
        (
            SELECT MAX(t3.bundle_count)
            FROM input_example t3
            WHERE t3.machine_no = 1 AND 
                  date_sub(date(t1.production_date), interval 1 day) = date(t3.production_date)
            GROUP BY DATE(t3.production_date)
        ),          0
    )
    AS Total_Bundles_Used
FROM  `input_example` t1
WHERE t1.machine_no = 1
GROUP BY DATE( t1.`production_date` )      

Catatan 1:Saya pikir @Grijesh dan saya sedang membersihkan masalah sintaks kueri secara bersamaan. Sangat menggembirakan bahwa kami berakhir dengan versi yang sangat mirip setelah kami berdua melakukan pembersihan. Versi saya berbeda dalam menggunakan IFNULL() karena tidak ada data sebelumnya. Saya juga berakhir dengan DATE_SUB , dan saya memastikan untuk mengurangi berbagai tanggal menjadi tanggal belaka tanpa komponen waktu, melalui DATE()

Catatan 2:Saya awalnya tidak sepenuhnya memahami tabel sumber Anda, jadi saya pikir saya perlu menerapkan penghitungan berjalan dalam kueri. Namun setelah diperiksa dengan lebih baik, jelas bahwa data sumber Anda sudah berjalan, jadi saya mengeluarkannya kembali.



  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 mengimpor file CSV ke tabel MySQL

  2. Bagaimana cara memasukkan kunci array sebagai kolom tabel dan nilai sebagai nilai kolom ke mysql menggunakan php?

  3. tampilkan baris baru mysql dalam HTML

  4. Bagaimana cara menggunakan order by di Laravel ketika menggunakan CASE WHEN?

  5. Mengapa menggunakan batasan Kunci Asing di MySQL?