Se utilizan en diferentes lugares. group by
modifica toda la consulta, como:
select customerId, count(*) as orderCount
from Orders
group by customerId
Pero partition by
solo funciona en una función de ventana, como row_number
:
select row_number() over (partition by customerId order by orderId)
as OrderNumberForThisCustomer
from Orders
Un group by
normalmente reduce el número de filas devueltas enrollándolas y calculando promedios o sumas para cada fila. partition by
no afecta el número de filas devueltas, pero cambia la forma en que se calcula el resultado de una función de ventana.