SQL PARTITION BY (Svenska)

Sammanfattning: i denna handledning lär du dig hur du använder SQL PARTITION BY klausul för att ändra hur fönsterfunktionen beräknar resultatet.

SQL PARTITION BY klausulöversikt

PARTITION BY klausul är en underklausul av OVER -satsen. PARTITION BY -satsen delar upp en fråges resultatuppsättning i partitioner. Fönsterfunktionen drivs på varje partition separat och beräknar om för varje partition.

Följande visar syntax för PARTITION BY -satsen:

Du kan ange en eller flera kolumner eller uttryck för att partitionera resultatuppsättningen. expression1, expression1, etc., kan bara hänvisa till kolumner som härrör från FROM klausul. De kan inte hänvisa till uttryck eller alias i vallistan.

Uttrycken för PARTITION BY -satsen kan vara kolumnuttryck, skalär underfråga eller skalarfunktion. Observera att en skalär underfråga och en skalarfunktion alltid returnerar ett enda värde.

Om du utelämnar PARTITION BY -satsen, behandlas hela resultatuppsättningen som en enda partition.

PARTITION BY vs. GROUP BY

GROUP BY -satsen används ofta i kombination med en aggregerad funktion som SUM() och AVG(). GROUP BY -klausulen minskar antalet rader som returneras genom att rulla upp dem och beräkna summan eller medelvärdet för varje grupp.

Till exempel returnerar följande uttalande genomsnittet löner för anställda efter avdelningar:

Följande bild visar resultatet:

PARTITION BY delar upp resultatuppsättningen i partitioner och ändrar hur fönsterfunktionen beräknas. PARTITION BY -klausulen minskar inte antalet rader som returneras.

Följande uttalande returnerar den anställdes lön och även den genomsnittliga lönen för den anställdas avdelning:

Här är den partiella utdata:

Med enkla ord är GROUP BY -satsen sammansatt medan PARTITION BY -satsen är analytisk.

I detta självstudie, du har lärt dig om SQL PARTITION BY -satsen som ändrar hur fönsterfunktionens resultat beräknas.

  • Hjälpte den här handledningen?
  • Ja Nej

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *