SQL -Fensterfunktionen k?nnen effiziente Berechnungen durchführen, ohne die Anzahl der Zeilen zu verringern. Es führt Operationen wie Ranking, Summieren und Gruppierung von Statistiken zu Daten über das von Over () definierte Fenster durch. Zu den gemeinsamen Funktionen geh?ren: 1. Row_number (), rank () und dense_rank () Für das Ranking wird die Differenz wiederholt die Wertverarbeitung; 2. Aggregationsfunktionen wie SUM () und AVG () implementieren Rolling -Statistiken; 3.. Verwenden Sie die Partition von bis zu Gruppen nach Dimension, Reihenfolge nach Steuerungen der Steuerung und Rahmenbereichsteuerung der Fenstergr??e. Mastering -Fensterfunktionen k?nnen komplexe Unterabfragen effektiv ersetzen und die Effizienz und Lesbarkeit von Abfragen verbessern.
SQL -Fensterfunktionen sind nicht so kompliziert wie sie klingen, und die richtige Verwendung kann viel ?rger sparen. Viele Menschen nisten gerne Unterabfragen oder Selbstverbindungen beim Schreiben von Abfragen, aber tats?chlich k?nnen Fensterfunktionen viele Probleme eleganter l?sen, wie z. B. Ranking, kumulative Summation, Gruppierungsstatistiken usw.

Was ist eine Fensterfunktion?
Einfach ausgedrückt, die Fensterfunktion berechnet eine Reihe verwandter Zeilen, ohne die ursprüngliche Zeilenzahl zu ?ndern . Im Gegensatz zu aggregierten Funktionen (z. B. SUM()
oder AVG()
), die mehrere Zeilen in einer Zeile kombinieren, beh?lt die Fensterfunktion jede Zeile bei und fügt das Ergebnis hinzu, das Sie berechnen m?chten.

Gemeinsame Szenarien wie:
- Rang den Verkauf jedes Verk?ufers in seinen jeweiligen Bereichen
- Berechnen Sie den durchschnittlichen Betrag jeder Bestellung in seiner Kundenverlaufsreihenfolge
- Holen Sie sich monatlichen Umsatz im Vergleich zum letzten Monat
Die grundlegende Syntax ist so:

Funktion_Name (Ausdruck) über ( [Partition von partition_expression] [Bestellung von Sort_expression] [Frame_Clause] )
Sie k?nnen es als "welche Gruppierung zuerst, dann nach Berechnungen in diesem" Fenster "verstehen.
Gemeinsame Fensterfunktionen und Verwendungsmethoden
Hier sind einige der am h?ufigsten verwendeten Fensterfunktionen und ihre typischen Verwendungen:
ROW_NUMBER()
, RANK()
, DENSE_RANK()
Diese Funktionen werden verwendet, um Rankings zu erzeugen. Der Unterschied besteht darin, wie man mit demselben Wert umgeht:
-
ROW_NUMBER()
: Ob es doppelte Werte gibt oder nicht, sie sind mit unterschiedlichen Zahlen angeordnet. -
RANK()
: Es gibt parallele Ranglisten, und die Nummer wird sp?ter übersprungen -
DENSE_RANK()
: Es gibt parallele Ranglisten, aber keine Nummer wird übersprungen
Angenommen, Sie suchen auf Verkaufsdaten:
W?HLEN Verk?ufer, Region, Menge, Row_number () over (partition nach Region bestellen nach Betrag Desc) als row_num, Rank () über (Partition nach Region Order nach Betrag) als Rang, Rank, Dense_rank () over (Partition nach Region Order nach Betrag) als Dichte_Rank Aus dem Verkauf;
Sie werden feststellen, dass sich die Unterschiede in den Ergebnissen verschiedener Ranking -Funktionen haupts?chlich in der Nebeneinanderstellung widerspiegeln.
Aggregierte Fensterfunktionen wie SUM()
, AVG()
, MIN()
, MAX()
usw.
Diese Art von Funktion kann rollende Statistiken ausführen, wie z. B. den monatlichen kumulativen Umsatz:
W?HLEN Monat, sales_amount, Sum (sales_amount) over (bestellen nach monatreihen zwischen unbegrenzt und aktuell) als kumulativ_salsales Aus monatly_sales;
Hier verwenden wir ROWS BETWEEN ...
um den Fensterbereich zu steuern, was "von der ersten Zeile zur aktuellen Zeile" bedeutet. Sie k?nnen sich auch ?ndern, um nur die ersten 3 Zeilen oder die ersten und letzten Zeilen zu betrachten und an Ihre Bedürfnisse anzupassen.
Ein paar Tipps für die Verwendung von Fensterfunktionen
Vergessen Sie nicht die Partition von, wenn Sie keine
PARTITION BY
hinzufügen, dann wird die gesamte Tabelle als gro?es Fenster behandelt. Wenn Sie nach Region, Abteilung, Benutzer usw. separat z?hlen m?chten, denken Sie daran, es hinzuzufügen.Ordnung von ist sehr wichtig Insbesondere beim Ranking oder einer Akkumulation ermittelt die
ORDER BY
der Reihenfolge der Fensterinsider. Wenn nicht angegeben, k?nnen einige Funktionen unvorhersehbare Ergebnisse zurückgeben.Die Rahmenklausel erm?glicht eine flexible Steuerung der Fenstergr??e Wenn Sie beispielsweise das durchschnittliche Verkaufsvolumen in den letzten 7 Tagen berechnen m?chten, k?nnen Sie so etwas wie:
AVG (Verk?ufe) über (Bestellung nach Datumsreihen zwischen 6 und aktuellen Zeile)
Vermeiden Sie den Missbrauch von Gruppen nach und Fensterfunktionen Manchmal sehen Sie jemanden,
GROUP BY
benutzt, indem Sie Fensterfunktionen verwenden. Dies ist in Ordnung, aber Sie sollten darauf achten, die Rolle jedes Schritts zu verstehen.GROUP BY
ist eine Aggregation, w?hrend Fensterfunktionen eine verbesserte Version von "Nichtaggregation" sind.
Grunds?tzlich ist das. Die Fensterfunktion mag zun?chst etwas verwirrt sein, aber sobald Sie sie erhalten haben, werden Sie es viel klarer finden als eine Reihe von Unterabfragen. Wenn Sie zum ersten Mal mit dem üben beginnen, k?nnen Sie mit einfachen Rankings und Akkumulationen beginnen und langsame Rahmeneinstellungen probieren. Nachdem Sie kompetent geworden sind, werden Sie viel einfacher zu schreiben, um komplexe Berichte zu schreiben.
Das obige ist der detaillierte Inhalt vonSQL -Fensterfunktions -Tutorial. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Kernunterschied zwischen SQL- und NOSQL -Datenbanken ist die Datenstruktur, die Skalierungsmethode und das Konsistenzmodell. 1. In Bezug auf die Datenstruktur verwendet SQL vordefinierte Muster, um strukturierte Daten zu speichern, w?hrend NoSQL flexible Formate wie Dokumente, Schlüsselwerte, Spaltenfamilien und Grafiken unterstützt, um unstrukturierte Daten zu verarbeiten. 2. In Bezug auf die Skalierbarkeit stützt sich SQL normalerweise auf st?rkere Hardware für die vertikale Expansion, w?hrend NoSQL die verteilte Expansion durch horizontale Expansion realisiert. 3. In Bezug auf die Konsistenz folgt SQL S?ure, um eine starke Konsistenz zu gew?hrleisten, und ist für Finanzsysteme geeignet, w?hrend NOSQL haupts?chlich Basismodelle verwendet, um die Verfügbarkeit und die endgültige Konsistenz hervorzuheben. 4. In Bezug auf die Abfragesprache bietet SQL standardisierte und leistungsstarke Abfragefunktionen, w?hrend NoSQL -Abfragesprachen vielf?ltig sind, aber nicht so reif und einheitlich wie SQL.

Unabh?ngig davon, ob Unterabfragen oder Verbindungen verwendet werden, h?ngt vom spezifischen Szenario ab. 1. Wenn es notwendig ist, Daten im Voraus zu filtern, sind Unterabfragen effektiver, z. B. die Suche nach den heutigen Bestellkunden. 2. Beim Zusammenführen gro?er Datens?tze ist die Verbindungseffizienz h?her, z. B. Kunden und ihre jüngsten Bestellungen; 3. Beim Schreiben einer hoch lesbaren Logik ist die Unterabschnittsstruktur klarer, z. 4. Bei der Durchführung von Aktualisierungen oder L?schen von Vorg?ngen, die von verwandten Daten abh?ngen, sind Unterabfragen die bevorzugte L?sung, z. B. das L?schen von Benutzern, die lange Zeit nicht angemeldet wurden.

AcompositeprimaryKeyinsqlisaprimaryKeyComponsedoftwoorMoreColumnShattogethereUm-IdentifyteachRow.1.itisusedwennoScolumncancanerowuniqueness, Suchasinastudent-CourseenrollmenttablewherebothentIdSandandCourseidareStoForisedtoforiperiquecomaunat

Es gibt drei Kernmethoden, um das zweith?chste Gehalt zu ermitteln: 1. Verwenden Sie die Grenze und versetzen Sie das maximale Gehalt und erhalten das Maximum, das für kleine Systeme geeignet ist. 2. Ausschlie?en des Maximalwerts durch Unterabfragen und dann Max finden, was sehr kompatibel und für komplexe Abfragen geeignet ist; 3. Verwenden Sie die Fensterfunktion Dense_Rank oder Row_Number, um parallele Ranglisten zu verarbeiten, was sehr skalierbar ist. Darüber hinaus ist es notwendig, IFNULL zu kombinieren oder sich zu verschmelzen, um mit der Abwesenheit eines zweith?chsten Gehalts umzugehen.

Sie k?nnen die erstellbare Anweisung von SQL verwenden und Klausel ausw?hlen, um eine Tabelle mit der gleichen Struktur wie eine andere Tabelle zu erstellen. Die spezifischen Schritte sind wie folgt: 1. Erstellen Sie eine leere Tabelle mit CreateTableEw_TableAsSelect*Fromexisting_tablewhere1 = 0;. 2. Fügen Sie bei Bedarf manuelle Indizes, Fremdschlüssel, Ausl?ser usw. hinzu, um sicherzustellen, dass die neue Tabelle intakt und mit der ursprünglichen Tabellenstruktur übereinstimmt.

MySQL unterstützt Regexp und Rlike; PostgreSQL verwendet Operatoren wie ~ und ~*; Oracle wird über regexp_like implementiert; SQLServer ben?tigt eine CLR -Integration oder -Simulation. 2. regelm??ig verwendet, um Postf?cher abzustimmen (z. Regexp_like (Benutzername, '[0-9]')). 3.. Achten Sie auf Leistungsprobleme,

Filterung von Nullwertdatens?tzen in SQL kann = null oder! = Null, 1. isnull oder isnotnull verwendet werden; 2. beispielsweise Benutzer, die nach E -Mail -Spalten suchen, sollten null ausgew?hlt*fromUserWhereemailisnull schreiben. 3.. Mehrere Felder k?nnen gleichzeitig bestimmen, dass mehrere ISNull -Bedingungen kombiniert werden k?nnen, z. B. oder oder die Verbindung. 4. Koalesce kann Nullwerte für die Anzeige oder die Standardverarbeitung ersetzen, sind jedoch nicht für die Filterung anwendbar. Da NULL einen unbekannten Wert darstellt und nicht am Vergleichsbetrieb von gleichem oder nicht gleichem Wert beteiligt ist, gibt = NULL das Ergebnis nicht zurück und meldet keinen Fehler. Die Where -Klausel akzeptiert nur wahre Zeilen, ignoriert falsche und unk

In der Vorhersageanalyse kann SQL die Datenvorbereitung und die Featurextraktion abschlie?en. Der Schlüssel besteht darin, die Anforderungen zu kl?ren und SQL -Funktionen vernünftigerweise zu verwenden. Zu den spezifischen Schritten geh?ren: 1. Datenvorbereitung erfordert das Extrahieren historischer Daten aus mehreren Tabellen und das Aggregieren und Reinigen, z. 2. Mit dem Funktionsprojekt k?nnen Sie Fensterfunktionen verwenden, um Zeitintervalle oder Verz?gerungsfunktionen zu berechnen, z. 3. Die Datensegmentierung wird empfohlen, um den Trainingssatz und den Testsatz basierend auf der Zeit zu teilen, z. B. nach Datum mit row_number () und dem proportionalen Sammelentyp zu markieren. Diese Methoden k?nnen die für Vorhersagemodelle erforderliche Datenfundament effizient erstellen.
