Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server:Unterschied zwischen PARTITION BY und GROUP BY

Sie werden an verschiedenen Orten verwendet. group by ändert die gesamte Abfrage, wie:

select customerId, count(*) as orderCount
from Orders
group by customerId

Aber partition by funktioniert nur mit einer Fensterfunktion, wie row_number :

select row_number() over (partition by customerId order by orderId)
    as OrderNumberForThisCustomer
from Orders

Eine group by reduziert normalerweise die Anzahl der zurückgegebenen Zeilen, indem sie zusammengefasst und Durchschnittswerte oder Summen für jede Zeile berechnet werden. partition by wirkt sich nicht auf die Anzahl der zurückgegebenen Zeilen aus, ändert jedoch, wie das Ergebnis einer Fensterfunktion berechnet wird.