Dieser Artikel erläutert anhand von Beispielen das Prinzip und die Lösung des MySQL-Gleitreihenfolgeproblems. Teilen Sie uns die Einzelheiten zu Ihrer Information mit: Erstellen Sie zunächst die Tabelle MonthlyOrders und importieren Sie einige Daten gemäß dem folgenden Code CREATE TABLE MonatlicheBestellungen( Bestellmonat DATUM, Bestellnummer INT UNSIGNED, PRIMÄRSCHLÜSSEL (Bestellmonat) ); INSERT INTO MonthlyOrders SELECT '2010-02-01',23; INSERT INTO MonthlyOrders SELECT '2010-03-01',26; INSERT INTO MonthlyOrders SELECT '2010-04-01',24; INSERT INTO MonthlyOrders SELECT '2010-05-01',27; INSERT INTO MonthlyOrders SELECT '2010-06-01',26; INSERT INTO MonthlyOrders SELECT '2010-07-01',32; INSERT INTO MonthlyOrders SELECT '2010-08-01',34; INSERT INTO MonthlyOrders SELECT '2010-09-01',30; INSERT INTO MonthlyOrders SELECT '2010-10-01',31; INSERT INTO MonthlyOrders SELECT '2010-11-01',32; INSERT INTO MonthlyOrders SELECT '2010-12-01',33; INSERT INTO MonthlyOrders SELECT '2011-01-01',31; INSERT INTO MonthlyOrders SELECT '2011-02-01',34; INSERT INTO MonthlyOrders SELECT '2011-03-01',34; INSERT INTO MonthlyOrders SELECT '2011-04-01',38; INSERT INTO MonthlyOrders SELECT '2011-05-01',39; INSERT INTO MonthlyOrders SELECT '2011-06-01',35; INSERT INTO MonthlyOrders SELECT '2011-07-01',49; INSERT INTO MonthlyOrders SELECT '2011-08-01',56; INSERT INTO MonthlyOrders SELECT '2011-09-01',55; INSERT INTO MonthlyOrders SELECT '2011-10-01',74; INSERT INTO MonthlyOrders SELECT '2011-11-01',75; INSERT INTO MonthlyOrders SELECT '2011-12-01',14; Beim Problem der gleitenden Reihenfolge geht es darum, für jeden Monat die Anzahl der gleitenden Bestellungen im Vorjahr (Quartal oder Monat) zurückzugeben, d. h. für jeden Monat N die Gesamtzahl der Bestellungen von N-11 bis zum Monat N. Dabei wird vorausgesetzt, dass es in der Abfolge der Monate keine Lücken gibt. Führen Sie die folgende SQL-Abfrage aus, um die Gesamtzahl der gleitenden Bestellungen für das Vorjahr für jeden Monat zurückzugeben WÄHLEN DATE_FORMAT(a.Bestellmonat, '%Y%m') AS Vonmonat, DATE_FORMAT(b.Bestellmonat, '%Y%m') AS heuteMonat, SUM(c.ordernum) AS Bestellungen Von monatlichen Bestellungen ein INNER JOIN Monatsbestellungen b ON DATE_ADD(a.Bestellmonat, INTERVALL 11 MONAT) = b.Bestellmonat INNER JOIN Monatsbestellungen c ON c.ordermonth ZWISCHEN a.ordermonth UND b.ordermonth GRUPPE NACH a.Bestellmonat,b.Bestellmonat; Die Laufergebnisse sind wie folgt Die Abfrage führt zunächst einen Self-Join für die Tabelle „MonthlyOrders“ durch. Tabelle A wird als Untergrenze (Von-Monat) und Tabelle B als Obergrenze (Bis-Monat) verwendet. Die Anschlussvoraussetzungen sind: DATE_ADD(a.Bestellmonat, INTERVALL 11 MONAT) = b.Bestellmonat Beispielsweise entspricht Februar 2010 in Tabelle A dem Januar 2011. Nach Abschluss der Selbstverbindung müssen Sie die Bestellungen zählen. Zu diesem Zeitpunkt müssen Sie einen weiteren Self-Join durchführen, um die Anzahl der Bestellungen für jeden Monat innerhalb des Bereichs zu erhalten. Voraussetzung für die Verbindung ist also c.ordermonth ZWISCHEN a.ordermonth UND b.ordermonth Basierend auf der oben genannten Methode können wir auch die Auftragslage in jedem Quartal berechnen und als Grundlage für den Vergleich mit dem Wachstum gegenüber dem Vorjahr verwenden. WÄHLEN DATE_FORMAT(a.Bestellmonat, '%Y%m') AS Vonmonat, DATE_FORMAT(b.Bestellmonat, '%Y%m') AS heuteMonat, SUM(c.ordernum) AS Bestellungen Von monatlichen Bestellungen ein INNER JOIN Monatsbestellungen b ON DATE_ADD(a.Bestellmonat, INTERVALL 2 MONAT) = b.Bestellmonat UND MONAT(a.Bestellmonat) % 3 = 1 INNER JOIN Monatsbestellungen c ON c.ordermonth ZWISCHEN a.ordermonth UND b.ordermonth GRUPPE NACH a.Bestellmonat,b.Bestellmonat; Die Laufergebnisse sind wie folgt Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „Zusammenfassung der allgemeinen MySQL-Funktionen“, „MySQL-Protokolloperationskenntnisse“, „Zusammenfassung der MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“ und „Zusammenfassung der MySQL-Datenbanksperrenkenntnisse“. Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist. Das könnte Sie auch interessieren:
|
<<: CentOS8 - bash: verstümmelte Zeichen und Lösungen
>>: jQuery implementiert das Ausblenden und Anzeigen von HTML-Elementen
Jede Webseite hat eine Adresse, die durch eine UR...
Inhaltsverzeichnis Überblick in Operatorverfeiner...
rahmen: Stil = „Rahmenstil: durchgezogen; Rahmenbr...
In horizontaler Richtung können Sie die Zellenaus...
veranschaulichen Bei einer Eigeninstallation des ...
Vorwort Ich habe bereits einen Artikel über REM-A...
Inhaltsverzeichnis 1. Einleitung 2. Bereitstellun...
Ich habe mich kürzlich mit Linux beschäftigt und ...
Vuex ist ein speziell für Vue.js-Anwendungen entw...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Hintergrund 1. Was ist DNS-Pre...
1. SVN-Server installieren yum installiere Subver...
Inhaltsverzeichnis Methode 1: Der einfachste Weg,...
Bei der Replikation werden die DDL- und DML-Opera...
Inhaltsverzeichnis einführen Link Start Gehen Sie...