SQL 결과에서 빈 날짜 채우기
제공된 예와 같이 공백이 포함된 데이터로 작업할 때는 공백을 채워야 합니다. 완전하고 정확한 표현을 보장하기 위해 날짜를 비워두세요. 이 문제를 해결하기 위한 몇 가지 접근 방식은 다음과 같습니다.
MySQL 솔루션
간단한 솔루션 중 하나는 MySQL 저장 프로시저를 사용하여 임시 테이블을 생성하는 것입니다. 이 테이블에는 지정된 범위 내에서 가능한 모든 날짜가 포함됩니다. 쿼리 결과와 임시 테이블을 결합하면 기존 개수를 유지하면서 누락된 날짜를 채울 수 있습니다.
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 솔루션
또는 Perl의 Date::Calc 모듈을 사용하여 날짜 목록을 생성하고 foreach를 사용하여 빈 목록을 채울 수 있습니다. 루프:
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 }
추가 고려 사항
가장 적절한 솔루션은 특정 요구 사항과 리소스 가용성에 따라 달라집니다. 대규모 데이터 세트의 경우 저장 프로시저 접근 방식이 더 효율적일 수 있는 반면 Perl 솔루션은 더 많은 유연성을 제공합니다. 다음 추가 요소를 고려하세요.
위 내용은 완전한 데이터 표현을 보장하기 위해 SQL 결과에 빈 날짜를 채우는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!