Maison > base de données > tutoriel mysql > PARTITION BY ou GROUP BY : quelle est la différence entre les requêtes SQL ?

PARTITION BY ou GROUP BY : quelle est la différence entre les requêtes SQL ?

Mary-Kate Olsen
Libérer: 2025-01-06 03:53:42
original
603 Les gens l'ont consulté

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

Requêtes de partitionnement : comprendre PARTITION BY et GROUP BY

Dans le domaine de l'agrégation de données, les requêtes de base de données s'appuient souvent sur la clause GROUP BY pour manipuler et agréger des données. Récemment, une technique alternative, PARTITION BY, a attiré l'attention des développeurs recherchant des performances de requête optimisées. Mais en quoi ces deux clauses diffèrent-elles ?

PARTITION BY, contrairement à GROUP BY, fonctionne dans le contexte de fonctions de fenêtre, telles que ROW_NUMBER(). Son objectif principal est de partitionner les données en sous-ensembles en fonction de critères spécifiques, permettant le calcul des valeurs au sein de chaque sous-ensemble, un peu comme une fenêtre glissant à travers un ensemble de données.

D'autre part, GROUP BY modifie l'intégralité de la requête, permettant l'agrégation des données sur des lignes avec des valeurs similaires. Il réduit le nombre de lignes renvoyées en les consolidant et en calculant des valeurs globales, telles que des moyennes ou des sommes.

Pour illustrer la différence, considérons l'exemple suivant :

Utilisation de GROUP BY :

SELECT customerId, COUNT(*) AS orderCount
FROM Orders
GROUP BY customerId;
Copier après la connexion

Cette requête regroupe les commandes par identifiant client et compte le nombre de commandes pour chaque client, réduisant ainsi le nombre de retours. lignes.

Utilisation de PARTITION BY :

SELECT ROW_NUMBER() OVER (PARTITION BY customerId ORDER BY orderId)
    AS OrderNumberForThisCustomer
FROM Orders;
Copier après la connexion

Cette requête calcule le numéro de commande pour chaque commande dans chaque partition client, permettant le classement des commandes pour chaque client . Cela n'affecte pas le nombre de lignes renvoyées.

En résumé, bien que PARTITION BY et GROUP BY servent des objectifs différents, ils partagent l'objectif commun de manipulation et d'agrégation des données. GROUP BY opère globalement sur la requête, réduisant le nombre de lignes renvoyées, tandis que PARTITION BY fonctionne dans le cadre des fonctions de fenêtre et ne modifie pas le nombre de lignes. Comprendre la distinction entre ces clauses permet aux développeurs d'adapter leurs requêtes à des manipulations de données spécifiques et d'améliorer les performances 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal