Melapik Tarikh Kosong dalam Keputusan SQL
Apabila bekerja dengan data yang mengandungi jurang, seperti dalam contoh yang diberikan, ia menjadi perlu untuk mengelas tarikh kosong untuk memastikan perwakilan yang lengkap dan tepat. Berikut ialah beberapa pendekatan untuk menangani isu ini:
Penyelesaian MySQL
Satu penyelesaian mudah ialah mencipta jadual sementara menggunakan prosedur tersimpan MySQL. Jadual ini akan mengandungi semua tarikh yang mungkin dalam julat yang ditentukan. Dengan menyertai jadual sementara dengan hasil pertanyaan anda, anda boleh mengisi tarikh yang hilang sambil mengekalkan kiraan sedia ada:
create procedure sp1(d1 date, d2 date) declare d datetime; create temporary table foo (d date not null); set d = d1 while d <= d2 do insert into foo (d) values (d) set d = date_add(d, interval 1 day) end while select foo.d, count(date) from foo left join table on foo.d = table.date group by foo.d order by foo.d asc; drop temporary table foo; end procedure
Perl Solution
Sebagai alternatif, anda boleh menggunakan modul Date::Calc dalam Perl untuk menjana senarai tarikh dan meletakkan tarikh kosong menggunakan foreach gelung:
use Date::Calc qw(:all); my @dates; my ($d1, $d2) = ('2008-08-05', '2008-08-07'); # Modify these as needed my $dates_per_month = @DaysInMonth[year($d2)-1900][month($d2)-1]; my $d = $d1; while ($d < $d2) { push @dates, $d; $d = NextDay($d); } my %counts; while (my ($date, $sum) = $sth->fetchrow) { $counts{$date} = $sum; } foreach my $date (@dates) { print CSV "$date,$counts{$date} || 0\n" # Print 0 for empty dates }
Pertimbangan Tambahan
Penyelesaian yang paling sesuai akan bergantung pada keperluan khusus dan ketersediaan sumber. Untuk set data yang besar, pendekatan prosedur tersimpan mungkin lebih berprestasi, manakala penyelesaian Perl menawarkan lebih fleksibiliti. Pertimbangkan faktor tambahan berikut:
Atas ialah kandungan terperinci Bagaimana untuk Pad Tarikh Kosong dalam Keputusan SQL untuk Memastikan Perwakilan Data Lengkap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!