Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menunjukkan Semua Bulan dalam Julat Tarikh, Termasuk Mereka yang mempunyai Nilai Sifar dalam SQL?

Bagaimana untuk Menunjukkan Semua Bulan dalam Julat Tarikh, Termasuk Mereka yang mempunyai Nilai Sifar dalam SQL?

Barbara Streisand
Barbara Streisandasal
2024-10-31 19:33:02782semak imbas

How to Show All Months in a Date Range, Including Those with Zero Values in SQL?

Menunjukkan Semua Bulan dalam Julat Tarikh, Termasuk Yang Bernilai Sifar

Dalam pengaturcaraan SQL, memilih data tertentu dalam tempoh tarikh tertentu boleh mencabar, terutamanya apabila berhadapan dengan nilai yang hilang. Masalah ini timbul apabila cuba mengira purata bulanan untuk semua bulan antara dua tarikh, dan bulan tanpa nilai tidak dipaparkan.

Penyelesaian

Untuk menangani isu ini, satu komprehensif pendekatan menggunakan "jadual tarikh" adalah disyorkan. Jadual ini mengandungi semua bulan dalam julat tarikh yang diperlukan. Dengan melakukan LEFT JOIN antara jadual tarikh dan jadual data sebenar, semua bulan, termasuk yang mempunyai nilai sifar, akan dipaparkan.

SQL Query

Yang berikut pertanyaan yang diubah suai menggabungkan teknik LEFT JOIN:

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 `DT`.`myDate` = `myTable`.`save_date`
WHERE `DT`.`myDate` BETWEEN '2009-01-01' AND '2009-07-01'
GROUP BY `DT`.`myYear`, `DT`.`myMonth`

Pertanyaan ini memastikan bahawa semua bulan dalam julat yang ditentukan ditunjukkan, termasuk bulan dengan nilai sifar. Dengan memilih medan tambahan daripada "Jadual tarikh", anda boleh melaporkan data dengan mudah mengikut tempoh masa yang berbeza, seperti suku atau hari dalam seminggu.

Atas ialah kandungan terperinci Bagaimana untuk Menunjukkan Semua Bulan dalam Julat Tarikh, Termasuk Mereka yang mempunyai Nilai Sifar dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn