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

So ändern Sie die Größe von Partitionen in CentOS7

Gestern habe ich jemandem bei der Installation ei...

Node.js gibt je nach Anforderungspfad unterschiedliche Daten zurück.

Inhaltsverzeichnis 1. Lernen Sie, je nach Anforde...

JavaScript zum Erzielen digitaler Uhreffekte

In diesem Artikelbeispiel wird der spezifische Co...

Beispiel für die Ausführung eines MySQL-Befehlszeilenskripts

Dieser Artikel veranschaulicht anhand eines Beisp...

Der Browser der Betaversion IE9 unterstützt HTML5/CSS3

Manche Leute sagen, dass IE9 die zweite Revolutio...

So erstellen Sie einen Trigger in MySQL

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierter Prozess zur Implementierung des 2048-Minispiels im WeChat-Applet

Rendern Beispielcode Heute werden wir das WeChat-...

Reacts Übergang von Klassen zu Hooks

Inhaltsverzeichnis ReagierenHooks Vorwort WarumHo...

Über Tomcat kombiniert mit Atomikos zur Implementierung von JTA

Vor Kurzem hat das Projekt die Umgebung gewechsel...

Wir treiben IE6 alleine in den Untergang

Tatsächlich fragen wir uns jeden Tag, wann IE6 wi...

MySQL-Operationen: Operationen mit JSON-Datentyp

Im vorherigen Artikel haben wir das ausführliche ...