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

Pilih semua bulan dalam rentang tanggal tertentu, termasuk yang memiliki nilai 0

Saya setuju dengan jawaban Lieven, buat tabel yang berisi semua bulan yang Anda butuhkan, dan gunakan itu untuk "LEFT JOIN" ke tabel hasil Anda. Ingat, ini adalah tabel yang sangat kecil, hanya 365(ish) baris per tahun data yang Anda miliki... Dan Anda dapat dengan mudah menulis beberapa kode untuk mengisi tabel ini pada awalnya

Kami melakukan ini di sini, dan memberikan banyak manfaat, misalnya, bayangkan tabel data bulanan dengan bidang berikut (dan bidang lain yang dapat Anda pikirkan!) terisi penuh untuk semua bulan dalam rentang tertentu;

  • Tanggal (Misalnya, 2009-04-01)
  • Hari (Misalnya 1)
  • Hari dalam Seminggu (Misalnya Rabu)
  • Bulan (Misalnya 4)
  • Tahun (Misalnya 2009)
  • Tahun Anggaran (Misalnya 2009/10)
  • Kuartal Keuangan (Misalnya 2009Q1)
  • Kuartal Kalender (Misalnya 2009Q2)

Kemudian gabungkan ini dengan kueri Anda di atas, sebagai berikut;

SELECT `DT`.`myYear`, `DT`.`myMonth`, 
           AVG(`myTable`.`value1`) as avg_value_1, 
           AVG(`myTable`.`value2`) as avg_value_2

FROM `dateTable` as DT
LEFT JOIN `myTable`
    ON `dateTable`.`myDate` = `myTable`.`save_date`

WHERE `dateTable`.`myDate` BETWEEN '2009-01-01' AND '2009-07-01'

GROUP BY `DT`.`myYear`, `DT`.`myMonth`

Mungkin ada beberapa kesalahan dalam kode SQL saya karena saya belum dapat membuat tabel pengujian, tetapi mudah-mudahan Anda akan mendapatkan prinsip dan mengubahnya sesuai dengan kebutuhan Anda!

Dengan ini, Anda dapat mengubah klausa "GROUP BY" Anda menjadi apa pun yang Anda miliki di tabel "dateTable", yang memungkinkan Anda untuk dengan mudah melaporkan menurut Kuartal Keuangan, Bulan, Hari, Hari dalam seminggu, dll.

Semoga membantu!



  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 Menggunakan Pernyataan KASUS di MySQL

  2. 5 Alat Pemantauan MySQL Teratas

  3. mySQL Mengembalikan 5 teratas dari setiap kategori

  4. Cara Mengekspor hasil Query menggunakan MySQL Workbench

  5. Apakah ada SQLite yang setara dengan DESCRIBE [tabel] MySQL?