Angesichts einer einfachen Tabelle, die eine Datums- oder Datetime-Spalte enthält, möchte ich die maximale Anzahl aufeinanderfolgender Tage abfragen, in denen Zeilen existieren, wenn optionale Filter vorhanden sind.Herausfinden einer maximalen Anzahl aufeinanderfolgender Tage
z.B. sagen eine Tabelle mit den folgenden Spalten:
id, Datumzeit, Benutzername, Kategorie
ich auf die effizienteste Art und Weise in der Lage sein möchten abfragen, möglich, die:
- längste Streifen (in Tagen) eines gegebenen Benutzernamen,
- längste Streifen (in Tagen) eines gegebenen Benutzernamen innerhalb einer gegebenen Kategorie,
- längste Streifen (in Tagen) unabhängig von einem Benutzernamen oder Kategorie,
- usw.
(Ich denke, die Abfrage nicht viel auf dieser Filter basieren würde sich ändern, aber sie geben eine Idee.)
Gefunden andere ähnliche Fragen, aber keine schien auf dieses besondere Bedürfnis zu antworten, aber fühle mich frei, mich mit einem geeigneten zu verbinden, den ich vielleicht verpasst habe.
Vielen Dank im Voraus.
Möchten Sie die größte Anzahl aufeinanderfolgender Tage haben, die ein bestimmter Benutzer aufgezeichnet hat (schwer) oder die größte Anzahl von Tagen zwischen zwei aufeinander folgenden Anmeldungen (einfach)? – Faibbus
Das ehemalige. Und mir ist klar, dass die Abfrage nicht einfach sein wird ... Danke. – Jeto
Dies wird als eine LAG-Abfrage strukturiert, die den Unterschied zwischen diesen Zeilen Daten und der vorherigen Zeile berechnet. dann sollte das einen Wert von "1" erzeugen, wenn weniger als ein Tag. Diese ganze Sache ist eine Unterabfrage für eine kumulative Summe, die auf einer Nicht-1-Zeile zurückgesetzt wird. - Das ist die Unterabfrage für eine MAX-Aggregation. – Randy