GROUP BY, une construction SQL couramment utilisée, facilite le regroupement des lignes de données en fonction de valeurs communes, permettant ainsi l'évaluation de l'agrégat fonctions sur ces lignes groupées. Cependant, l'émergence de PARTITION BY dans les opérations de base de données a soulevé des questions sur la distinction entre ces deux opérations.
Présentation de GROUP BY
GROUP BY regroupe des enregistrements de données partageant des enregistrements identiques valeurs dans les colonnes spécifiées, en les regroupant en groupes distincts. Les fonctions d'agrégation suivantes (par exemple, SUM(), COUNT()) sont ensuite calculées pour chaque groupe. L'objectif principal de GROUP BY est de résumer et de condenser de grands ensembles de données.
Partitionnement avec PARTITION BY
Contrairement à GROUP BY, PARTITION BY fonctionne dans le contexte des fonctions de fenêtre. Ces fonctions évaluent les lignes de données dans une plage (ou « fenêtre ») définie par des conditions spécifiques. PARTITION BY divise les données fenêtrées en partitions en fonction des valeurs de colonne spécifiées. La fonction de fenêtre est ensuite appliquée séparément à chaque partition, permettant des calculs plus granulaires et nuancés.
Distinctions clés
Exemple
Considérons un tableau de commandes :
CustomerID | OrderID |
---|---|
1 | 10 |
1 | 15 |
2 | 20 |
2 | 25 |
Utiliser GROUPE PAR :
SELECT CustomerID, COUNT(*) AS OrderCount FROM Orders GROUP BY CustomerID
Sortie :
CustomerID | OrderCount |
---|---|
1 | 2 |
2 | 2 |
Utilisation de PARTITION BY :
SELECT ROW_NUMBER() OVER (PARTITION BY CustomerID ORDER BY OrderID) AS OrderNumberForRow FROM Orders
Sortie :
CustomerID | OrderID | OrderNumberForRow |
---|---|---|
1 | 10 | 1 |
1 | 15 | 2 |
2 | 20 | 1 |
2 | 25 | 2 |
Dans cet exemple, PARTITION BY sépare les données par CustomerID et attribue des numéros de ligne consécutivement dans chaque partition.
En résumé, PARTITION BY offre une flexibilité supplémentaire dans les calculs de fonctions de fenêtre, en partitionnant les données pour des évaluations plus ciblées. GROUP BY, en revanche, propose une agrégation globale et une réduction de lignes pour des résumés de données concis. Comprendre les distinctions entre ces opérations est crucial pour optimiser le code SQL et maximiser l'efficacité des requêtes.
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!