Mysql8.0 verwendet Fensterfunktionen, um Sortierprobleme zu lösen

Mysql8.0 verwendet Fensterfunktionen, um Sortierprobleme zu lösen

Einführung in MySQL-Fensterfunktionen

MySQL unterstützt Fensterfunktionen seit MySQL 8.0. Diese Funktion wird seit langem in den meisten kommerziellen Datenbanken und einigen Open-Source-Datenbanken unterstützt, und einige werden auch als analytische Funktionen bezeichnet.

Was ist ein Fenster?

Das Konzept des Fensters ist sehr wichtig. Es kann als eine Reihe von Datensätzen verstanden werden. Die Fensterfunktion ist eine spezielle Funktion, die auf einer Reihe von Datensätzen ausgeführt wird, die bestimmte Bedingungen erfüllen. Für jeden Datensatz muss innerhalb dieses Fensters eine Funktion ausgeführt werden. Bei manchen Funktionen ist die Fenstergröße abhängig vom Datensatz festgelegt, es handelt sich also um ein statisches Fenster. Bei manchen Funktionen hingegen entsprechen unterschiedliche Datensätze unterschiedlichen Fenstern. Dieses sich dynamisch ändernde Fenster wird als gleitendes Fenster bezeichnet.

Fensterfunktionen und gewöhnliche Aggregatfunktionen werden ebenfalls leicht verwechselt. Die Unterschiede zwischen beiden sind wie folgt:

Aggregatfunktionen fassen mehrere Datensätze zu einem zusammen, während Fensterfunktionen für jeden Datensatz ausgeführt werden, unabhängig von der Anzahl der auszuführenden Datensätze.

Aggregatfunktionen können auch in Fensterfunktionen verwendet werden, was später anhand von Beispielen verdeutlicht wird.

1. MySQL 5.0

Beispiel: Wir möchten den Umsatz des Verkaufspersonals berechnen, die Ergebnisse sollen von hoch nach niedrig sortiert werden und die Abfrageergebnisse sollen das Verkaufsranking enthalten.


Dies ist ein Teil der Daten aus einer Produktbestelltabelle.

1. Berechnen Sie den Umsatz des Verkaufspersonals und sortieren Sie die Ergebnisse von hoch nach niedrig

In diesem Teil können wir „group by“ direkt verwenden, um das Verkaufspersonal zu gruppieren, die Aggregatfunktion „sum“ verwenden, um die Verkäufe zu summieren, und dann „order by“ verwenden, um die Verkaufsergebnisse zu sortieren. Die Anweisung lautet wie folgt:

SELECT Umsatzname, Summe (Gewinn) FROM spm_order GROUP BY Umsatzname ORDER BY Summe (Gewinn) DESC 


Abfrageergebnisse

2. Ob die Abfrageergebnisse Verkaufsrankings enthalten sollen.

In MySQL 5.0 müssen wir eine Auto-Inkrement-Sortierungsvariable definieren, damit diese automatisch +1 als neue Spalte hinzufügen kann. Die Anweisung lautet wie folgt:

Setzen Sie @rank = 0;
WÄHLEN
A.*,
@rank := @rank + 1 AS Rangnummer
AUS
( SELECT sales_name, sum( profit ) FROM spm_order GROUP BY sales_name ORDER BY sum( profit ) DESC ) A

Das := bedeutet hier Zuweisung und das A dient dazu, der Unterabfrage einen Alias ​​für den einfachen Aufruf zu geben.

Die Ergebnisse sind wie folgt:


Bildbeschreibung hier einfügen

2. MySQL 8.0

Für dieses Problem gibt es spezielle Fensterfunktionen, die in MySQL 8.0 aufgerufen werden können, um komplexe Probleme zu vereinfachen.

Die Anweisung lautet wie folgt:

WÄHLEN
Verkaufsname,
Summe (Umsatz),
Zeilennummer () über (ORDER BY Summe (Umsatz) DESC) AS 'Rang'
AUS
spm_bestellung
GRUPPELN NACH
Vertriebsname

Ergebnis:


Bildbeschreibung hier einfügen

Hier verwenden wir [ row_number() over () ] und schreiben den Inhalt, den wir sortieren möchten, direkt in over().
Die meisten Unternehmen verwenden Version 5.0. Informieren Sie sich hierüber.

Zusammenfassen

Oben habe ich Ihnen die Verwendung von Fensterfunktionen in Mysql8.0 zur Lösung von Sortierproblemen vorgestellt. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Einführung und Zusammenfassung der MySQL 8.0-Fensterfunktionen
  • Fallanalyse von SQL-Fensterfunktionen zur Erzielung einer effizienten Paging-Abfrage
  • Spezifische Verwendung von MySQL-Fensterfunktionen
  • Lernen Sie schnell etwas über SQL-Fensterfunktionen

<<:  Lösung für die Eingabeaufforderung „Keine solche Datei oder kein solches Verzeichnis“ beim Ausführen ausführbarer Dateien unter Linux

>>:  JavaScript-OffsetParent-Fallstudie

Artikel empfehlen

Detaillierte Erklärung der in Node.js integrierten Module

Inhaltsverzeichnis Überblick 1. Pfadmodul 2. Bis ...

Implementierung eines einfachen Gobang-Spiels mit nativem JavaScript

In diesem Artikel finden Sie den spezifischen Cod...

Beispielcode zum Konvertieren von HTML-Tabellendaten in das JSON-Format

Die Javascript-Funktion zum Konvertieren von <t...

Detaillierte Erklärung zum Anzeigen der MySQL-Speichernutzung

Vorwort Dieser Artikel stellt hauptsächlich die r...

Ein super detailliertes Vue-Router Schritt-für-Schritt-Tutorial

Inhaltsverzeichnis 1. Router-Ansicht 2. Router-Ve...

MySQL-Einschränkungstypen und Beispiele

Zwang Einschränkungen gewährleisten Datenintegrit...

Versteckter Overhead von Unix/Linux-Forks

Inhaltsverzeichnis 1. Der Ursprung der Gabel 2. F...

JavaScript implementiert einfache Datumseffekte

Der spezifische Code der JavaScript-Datumseffekte...

Vergleichende Analyse der Hochverfügbarkeitslösungen von Oracle und MySQL

Was die Hochverfügbarkeitslösungen für Oracle und...

Zusammenfassung von 28 gängigen JavaScript-String-Methoden und Verwendungstipps

Inhaltsverzeichnis Vorwort 1. Ermitteln Sie die L...

Tutorial zur HTML-Tabellenauszeichnung (15): Tabellentitel

<br />Mit diesem Tag können Sie direkt einen...

Zusammenfassung der Linux-Befehlsmethoden zum Anzeigen verwendeter Befehle

Im System werden viele Befehle verwendet. Wie kön...

SVN-Installation und grundlegende Bedienung (grafisches Tutorial)

Inhaltsverzeichnis 1. Was ist SVN? 2. Methoden zu...