PARTITION BY mit und ohne KEEP in Oracle
Mit der PARTITION BY-Klausel in Oracle können Benutzer Zeilen in einer Tabelle basierend auf angegebenen Spalten gruppieren für Aggregatberechnungen. In einigen Fällen kann die KEEP-Klausel in Verbindung mit PARTITION BY verwendet werden, um die Beibehaltung einzelner Zeilen innerhalb jeder Partition zu steuern.
Syntax mit KEEP:
MIN(sal) KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno)
In dieser Syntax folgt auf die KEEP-Klausel DENSE_RANK FIRST, was angibt, dass die Zeile mit dem niedrigsten Gehalt in jeder Partition beibehalten werden soll. DENSE_RANK gewährleistet eine kontinuierliche Rangfolge, was bedeutet, dass Zeilen mit identischen Gehältern die gleiche Rangfolge haben.
Syntax ohne KEEP:
MIN(sal) OVER (PARTITION BY deptno)
In dieser Syntax wird die KEEP-Klausel weggelassen . Ohne KEEP werden alle Zeilen innerhalb jeder Partition für die Aggregatberechnung berücksichtigt, was dazu führen kann, dass mehrere Zeilen mit identischen Werten im Ergebnis enthalten sind.
Unterschied:
Der Hauptunterschied zwischen den beiden Abfragen besteht darin:
Redundantes KEEP:
Im bereitgestellten Beispiel ist die KEEP-Klausel redundant, da auch die MIN-Funktion angewendet wird zur gleichen Spalte (sal). Daher ist die Zeile mit der ersten Rangfolge basierend auf dem Gehalt immer diejenige mit dem niedrigsten Gehalt.
Beispiel mit einer anderen Sortierspalte:
Wenn jedoch eine andere Wird die Bestellspalte für die KEEP-Klausel verwendet, kann sie einen anderen Effekt haben:
MIN(sal) KEEP (DENSE_RANK FIRST ORDER BY name) OVER (PARTITION BY deptno)
In diesem Fall die Zeile mit dem niedrigsten Gehalt unter denen mit dem gleichen Die Reihenfolge (Name) wird in jeder Partition beibehalten. Dadurch können Benutzer das niedrigste Gehalt für Mitarbeiter mit bestimmten Namen innerhalb jeder Abteilung auswählen.
Das obige ist der detaillierte Inhalt vonWie wirkt sich die „KEEP'-Klausel auf die Aggregatfunktionen „PARTITION BY' in Oracle aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!