PARTITION BY satsen anger intervallet för poster som kommer att användas för varje "GROUP" inom OVER klausul.
I ditt exempel SQL, DEPT_COUNT kommer att returnera antalet anställda inom den avdelningen för varje anställd post. (Det är som om du avnomaliserar emp tabell; du returnerar fortfarande varje post i emp tabell.)
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
Om det fanns en annan kolumn (t.ex. state ) då kan du räkna hur många avdelningar i den staten.
Det är som att få resultaten av en GROUP BY (SUM , AVG , etc.) utan att aggregera resultatuppsättningen (dvs. ta bort matchande poster).
Det är användbart när du använder LAST OVER eller MIN OVER funktioner för att få till exempel lägsta och högsta lönen på avdelningen och sedan använda den i en uträkning mot denna rekord lön utan ett underval, vilket är mycket snabbare.
Läs den länkade AskTom-artikeln för mer information.