Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server :Différence entre PARTITION BY et GROUP BY

Ils sont utilisés à différents endroits. group by modifie toute la requête, comme :

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

Mais partition by fonctionne uniquement sur une fonction de fenêtre, comme row_number :

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

Un group by réduit normalement le nombre de lignes renvoyées en les cumulant et en calculant des moyennes ou des sommes pour chaque ligne. partition by n'affecte pas le nombre de lignes renvoyées, mais modifie la façon dont le résultat d'une fonction de fenêtre est calculé.