Heim >Datenbank >MySQL-Tutorial >Wie fülle ich fehlende Daten in SQL-Abfrageergebnissen ein?

Wie fülle ich fehlende Daten in SQL-Abfrageergebnissen ein?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-23 14:34:20680Durchsuche

How to Fill Missing Dates in SQL Query Results?

Fehlende Daten in SQL-Ergebnissen auffüllen

Beim Abfragen einer Datenbank nach einem Datumsbereich treten häufig Lücken in den Daten auf. Um dieses Problem zu lösen, gibt es mehrere einfache Ansätze, um die Ergebnisse mit leeren Datumsangaben und entsprechenden Zählungen aufzufüllen.

Auf der MySQL-Seite

Eine Möglichkeit besteht darin, eine gespeicherte Prozedur zu erstellen Dadurch wird eine temporäre Tabelle mit allen möglichen Daten innerhalb des angegebenen Bereichs generiert. Diese Tabelle kann dann mit den Abfrageergebnissen verknüpft werden, um die fehlenden Daten zu ergänzen.

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;

Auf der Perl-Seite

Wenn Perl-Module wie Date:: y verfügbar sind, können Sie über einen Datumsbereich iterieren und nach leeren Datumsangaben in den Abfrageergebnissen suchen. Wenn gefunden, fügen Sie einen Null-Zählungseintrag für dieses Datum hinzu.

use Date::y;

# Get the date range
my $d1 = '2008-08-05';
my $d2 = '2008-08-07';

# Iterate over the date range
my $date = Date::y->date($d1);
while ($date <= Date::y->date($d2)) {
  # Check if the date exists in the query results
  if (! exists $results{$date}) {
    # Add the date with a zero count
    $results{$date} = 0;
  }
  $date = $date->next;
}

Das obige ist der detaillierte Inhalt vonWie fülle ich fehlende Daten in SQL-Abfrageergebnissen ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn