Distinguer PARTITION BY de GROUP BY
Lorsque vous travaillez avec des requêtes agrégées, GROUP BY est depuis longtemps une option familière pour rassembler des données. Cependant, l'émergence de PARTITION BY a introduit un concept similaire qui soulève des questions sur sa relation avec GROUP BY.
Comprendre le rôle de GROUP BY
GROUP BY opère à au niveau de la requête, transformant l'intégralité du résultat de la requête. En regroupant les lignes en fonction de colonnes spécifiques, il condense les données et calcule les valeurs globales (par exemple, nombre, moyenne, somme) pour chaque groupe. Par exemple :
select customerId, count(*) as orderCount from Orders group by customerId
PARTITION BY : une perspective différente
Contrairement à GROUP BY, PARTITION BY est associée à des fonctions de fenêtre, telles que ROW_NUMBER(). Il fonctionne dans le cadre des calculs de fenêtres, modifiant la façon dont ces fonctions calculent leurs résultats. Prenons l'exemple suivant :
select row_number() over (partition by customerId order by orderId) as OrderNumberForThisCustomer from Orders
Différences clés à noter
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!