Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Server:differenza tra PARTITION BY e GROUP BY

Sono usati in luoghi diversi. group by modifica l'intera query, come:

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

Ma partition by funziona solo su una funzione della finestra, come row_number :

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

Un group by normalmente riduce il numero di righe restituite arrotolandole e calcolando medie o somme per ogni riga. partition by non influisce sul numero di righe restituite, ma cambia il modo in cui viene calcolato il risultato di una funzione finestra.