SQL-Abfrage für Benutzer, die sich an mindestens n aufeinanderfolgenden Tagen angemeldet haben

SQL-Abfrage für Benutzer, die sich an mindestens n aufeinanderfolgenden Tagen angemeldet haben

Nehmen Sie als Beispiel drei aufeinanderfolgende Tage und verwenden Sie das Tool: MySQL.

1. SQL-Tabelle erstellen:

 Tabelle erstellen, falls nicht vorhanden: order(id varchar(10),date datetime,orders varchar(10));
in Reihenfolge einfügen Werte('1', '2019/1/1',10);
in Reihenfolge einfügen Werte('1', '2019/1/2',109);
in Reihenfolge einfügen Werte('1', '2019/1/3',150);
in Reihenfolge einfügen Werte('1', '2019/1/4',99);
in Reihenfolge einfügen Werte('1', '2019/1/5',145);
in Reihenfolge einfügen Werte('1', '2019/1/6',1455);
in Reihenfolge einfügen Werte('1', '2019/1/7',199);
in Reihenfolge einfügen Werte('1', '2019/1/8',188);
in Reihenfolge einfügen Werte('4', '2019/1/1',10);
in Reihenfolge einfügen Werte('2', '2019/1/2',109);
in Reihenfolge einfügen Werte('3', '2019/1/3',150);
in Reihenfolge einfügen Werte('4', '2019/1/4',99);
in Reihenfolge einfügen Werte('5', '2019/1/5',145);
in Reihenfolge einfügen Werte('6', '2019/1/6',1455);
in Reihenfolge einfügen Werte('7', '2019/1/7',199);
in Reihenfolge einfügen Werte('8', '2019/1/8',188);
in Reihenfolge einfügen Werte('9', '2019/1/1',10);
in Reihenfolge einfügen Werte('9', '2019/1/2',109);
in Reihenfolge einfügen Werte('9', '2019/1/3',150);
in Reihenfolge einfügen Werte('9', '2019/1/4',99);
in Reihenfolge einfügen Werte('9', '2019/1/6',145);
in Reihenfolge einfügen Werte('9', '2019/1/9',1455);
in Reihenfolge einfügen Werte('9', '2019/1/10',199);
in Reihenfolge einfügen Werte('9', '2019/1/13',188);

Sehen Sie sich das Datenblatt an:

2. Verwenden Sie die Sortierfunktion row_number() over(), um die Rangfolge jeder ID zu berechnen. Das SQL lautet wie folgt:

 Wählen Sie *, Zeilennummer () über (Partition nach ID, Sortierung nach Datum) 'Rang'
ab Bestellung
wobei „Bestellungen“ nicht NULL ist;

Datenblatt anzeigen:

3. Subtrahieren Sie das Rangfeld vom Datumsfeld. Das SQL lautet wie folgt:

 wähle *,DATE_SUB(ein.Datum,Intervall,ein.Rang,Tag) 'date_sub'
aus(
Wählen Sie *, Zeilennummer () über (Partition nach ID, Sortierung nach Datum) 'Rang'
ab Bestellung
wobei „Bestellungen“ nicht NULL ist
) A;

Sehen Sie sich die Daten an:

4. Gruppieren Sie nach ID und Datum und berechnen Sie die Anzahl der gruppierten Elemente (Anzahl) sowie die frühesten und spätesten Anmeldezeiten. Das SQL lautet wie folgt:

 wähle b.id,min(Datum) 'Startzeit',max(Datum) 'Endzeit',Anzahl(*) 'Datumsanzahl'
aus(
wähle *,DATE_SUB(ein.Datum,Intervall,ein.Rang,Tag) 'date_sub'
aus(
Wählen Sie *, Zeilennummer () über (Partition nach ID, Sortierung nach Datum) 'Rang'
ab Bestellung
wobei „Bestellungen“ nicht NULL ist
)
) B
Gruppieren nach b.date_sub,id
mit count(*) >= 3
;

Sehen Sie sich die Daten an:

Quellen:

SQL-Abfrage für Benutzer, die an mindestens sieben aufeinanderfolgenden Tagen Bestellungen aufgegeben haben

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So fragen Sie die maximale Anzahl aufeinanderfolgender Anmeldetage zwischen zwei Daten in MySQL ab
  • MySQL berechnet die Anzahl der Tage, Monate und Jahre zwischen zwei Daten
  • mysql generiert fortlaufende Daten und Variablenzuweisungen
  • So berechnen Sie die Anzahl aufeinanderfolgender Anmeldetage in MySQL

<<:  Zusammenfassung der für die Front-End-Entwicklung erforderlichen allgemeinen Toolfunktionen

>>:  Neonlichteffekte mit reinem CSS3 umgesetzt

Artikel empfehlen

Installieren Sie mysql5.7.10 manuell unter Ubuntu

Dieses Tutorial beschreibt den Prozess der manuel...

MySQL ruft die aktuelle Datums- und Uhrzeitfunktion ab

Holen Sie sich das aktuelle Datum + die aktuelle ...

Beispiele für die Implementierung und Verwendung von geplanten MySQL-Aufgaben

Dieser Artikel veranschaulicht anhand von Beispie...

Warum sollten Sie mit der add_header-Direktive von Nginx vorsichtig sein?

Vorwort Wie wir alle wissen, legt die Nginx-Konfi...

So ändern Sie die Master-Slave-Replikationsoptionen in MySQL online

Vorwort: Die am häufigsten verwendete Architektur...

Front-End-Statusverwaltung (Teil 2)

Inhaltsverzeichnis 1. Wiederholen 1.1. Shop (Bibl...

Zusammenfassung der Namenskonventionen für HTML und CSS

CSS-Benennungsregeln Header: Header Inhalt: Inhalt...

mySql SQL-Abfrageoperation für statistische Mengen

Ich werde nicht viel Unsinn erzählen, schauen wir...

HTML-Elemente (Tags) und ihre Verwendung

a : Gibt die Start- oder Zielposition eines Hyper...

Vollständiger Prozessdatensatz zur Fehlerbehebung bei MySQL DeadLock

【Autor】 Liu Bo: Leitender Datenbankmanager im Ctr...

So zeigen Sie im img-Tag in HTML nur die Bildmitte an (drei Methoden)

Derzeit gibt es drei Möglichkeiten, die Mitte ein...