sql >> Databasteknik >  >> RDS >> Oracle

Oracle-partition efter nyckelord

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.



  1. BESTÄLL EFTER datum och tid FÖRE GRUPP EFTER namn i mysql

  2. Hur väljer jag de sista 5 raderna i en tabell utan att sortera?

  3. MySQL-skillnad mellan två rader i en SELECT-sats

  4. Fel vid Update Join