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é.