Heim >Datenbank >MySQL-Tutorial >Wie kann man Datensätze innerhalb eines Datumsbereichs in SQL effizient zählen?
Berechnen der Datensatzanzahl für Daten zwischen zwei Daten
Um die Anzahl der Datensätze zu berechnen, die in einen Datumsbereich für ein mehrachsiges Diagramm fallen, Wir müssen die Nichtübereinstimmung des Operandentyps in der ursprünglichen Abfrage überwinden. Um dieses Problem anzugehen, untersuchen wir alternative Ansätze, die Tally-Tabellen oder -Funktionen nutzen.
Eine hochleistungsfähige Lösung ist die Verwendung einer Tally-Tabelle oder -Funktion. Die bekannte Tally-Funktion von Itzik Ben-Gan kann wie folgt integriert werden:
DECLARE @StartDate date = '2020-11-01', @EndDate date = '2021-02-22'; WITH L0 AS ( SELECT 1 AS c FROM (VALUES(1),(1),(1),(1),(1),(1),(1),(1), (1),(1),(1),(1),(1),(1),(1),(1)) AS D(c) ), L1 AS ( SELECT 1 AS c FROM L0 AS A CROSS JOIN L0 AS B ), L2 AS ( SELECT 1 AS c FROM L1 AS A CROSS JOIN L1 AS B ), Nums AS ( SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rownum FROM L2 ) Date_Range_T (d_range) AS ( SELECT TOP(DATEDIFF(day, @StartDate, @EndDate) + 1) DATEADD(day, rownum - 1, @StartDate) AS d_range, DATEADD(day, rownum, @StartDate) AS d_rangeNext FROM Nums ) SELECT d_range, COUNT(Id) AS Total FROM Date_Range_T LEFT JOIN tbl_Support_Requests R ON R.CreatedDate >= T.d_range AND R.CreatedDate < T.d_rangeNext GROUP BY d_range ORDER BY d_range ASC
Dieser Ansatz generiert eine Datumsbereichstabelle für den angegebenen Zeitraum, die dann in einem Left Join mit der Tabelle tbl_Support_Requests verwendet wird, um die darin enthaltenen Datensätze zu zählen jeden Datumsbereich.
Das obige ist der detaillierte Inhalt vonWie kann man Datensätze innerhalb eines Datumsbereichs in SQL effizient zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!