Eles são usados em lugares diferentes.
group by modifica toda a consulta, como:select customerId, count(*) as orderCount
from Orders
group by customerId
Mas
partition by apenas funciona em uma função de janela, como row_number :select row_number() over (partition by customerId order by orderId)
as OrderNumberForThisCustomer
from Orders
Um
group by normalmente reduz o número de linhas retornadas acumulando-as e calculando médias ou somas para cada linha. partition by não afeta o número de linhas retornadas, mas altera como o resultado de uma função de janela é calculado.