Maison > base de données > tutoriel mysql > GROUP BY ou PARTITION BY : quelle est la différence en SQL ?

GROUP BY ou PARTITION BY : quelle est la différence en SQL ?

DDD
Libérer: 2025-01-06 06:12:39
original
928 Les gens l'ont consulté

GROUP BY vs. PARTITION BY: What's the Difference in SQL?

Comprendre les différences entre PARTITION BY et GROUP BY

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

  1. Portée : GROUP BY affecte l'ensemble du résultat de la requête, en regroupant et en agrégeant toutes les lignes conformes aux critères spécifiés. PARTITION BY, en revanche, se limite aux fonctions de fenêtre, partitionnant les données uniquement dans la plage de fenêtre définie.
  2. Impact sur le nombre de lignes : GROUP BY réduit généralement le nombre de lignes de sortie car il fusionne les valeurs en double. A l'inverse, PARTITION BY ne modifie pas le nombre de lignes mais modifie plutôt le calcul du résultat de la fonction fenêtre.

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal