Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle-Partition nach Schlüsselwort

Die PARTITION BY -Klausel legt den Bereich der Datensätze fest, die für jede "GROUP" innerhalb des OVER verwendet werden Klausel.

In Ihrem SQL-Beispiel DEPT_COUNT gibt die Anzahl der Mitarbeiter in dieser Abteilung für jeden Mitarbeiterdatensatz zurück. (Es ist, als würden Sie den emp de-nomisieren Tisch; Sie geben immer noch jeden Datensatz im emp zurück Tabelle.)

emp_no  dept_no  DEPT_COUNT
1       10       3
2       10       3
3       10       3 <- three because there are three "dept_no = 10" records
4       20       2
5       20       2 <- two because there are two "dept_no = 20" records

Gäbe es eine andere Spalte (z.B. state ), dann könnten Sie zählen, wie viele Abteilungen in diesem Staat sind.

Es ist, als ob man die Ergebnisse eines GROUP BY erhält (SUM , AVG , etc.), ohne die Ergebnismenge zu aggregieren (d. h. übereinstimmende Datensätze zu entfernen).

Es ist nützlich, wenn Sie den LAST OVER verwenden oder MIN OVER Funktionen, um zum Beispiel das niedrigste und höchste Gehalt in der Abteilung zu erhalten und diese dann in einer Berechnung gegen dieses Datensatzgehalt ohne zu verwenden eine Unterauswahl, die viel schneller ist.

Lesen Sie den verlinkten AskTom-Artikel für weitere Details.