Maison > base de données > tutoriel mysql > le corps du texte

Que signifie grouper ?

青灯夜游
Libérer: 2023-03-09 18:37:11
original
31405 Les gens l'ont consulté

grouper au moyen de « requête de groupe », qui peut être compris comme « regrouper (Grouper) selon (par) certaines règles » ; sa fonction est de diviser un ensemble de données en plusieurs petites zones selon certaines règles, puis de cibler plusieurs petites zones ; les zones sont utilisées pour le traitement des données. Dans MySQL, GROUP BY est une clause facultative de l'instruction SELECT utilisée pour regrouper les résultats d'une requête en fonction d'un ou plusieurs champs. Elle réduit le nombre de lignes dans l'ensemble de résultats.

Que signifie grouper ?

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

grouper par "requête de groupe".

La déclaration Group By signifie littéralement « Grouper selon (par) certaines règles » en anglais. Sa fonction est de diviser un ensemble de données en plusieurs petites zones selon certaines règles, puis d'effectuer un traitement de données sur plusieurs petites zones.

MySQL utilise la requête de groupe GROUP BY

Dans MySQL, le mot-clé GROUP BY peut regrouper les résultats d'une requête en fonction d'un ou plusieurs champs.

La clause GROUP BY regroupe un ensemble de lignes dans un petit groupe d'enregistrements de lignes récapitulatives par la valeur d'une colonne ou d'une expression. La clause GROUP BY renvoie une ligne pour chaque groupe. En d’autres termes, cela réduit le nombre de lignes dans le jeu de résultats. La clause

GROUP BY est souvent utilisée avec des fonctions d'agrégation telles que SUM, AVG, MAX, MIN et COUNT. Les fonctions d'agrégation sont utilisées dans la clause SELECT pour calculer des informations sur chaque regroupement.

La clause GROUP BY est une clause facultative de l'instruction SELECT. Voici la syntaxe de la clause GROUP BY :

SELECT 
    c1, c2,..., cn, aggregate_function(ci)
FROM
    table
WHERE
    where_conditions
GROUP BY c1 , c2,...,cn;
Copier après la connexion

La clause GROUP BY doit apparaître après les clauses FROM et WHERE. Après le mot-clé GROUP BY se trouve une liste de colonnes ou d'expressions séparées par des virgules qui doivent être utilisées comme conditions pour regrouper les lignes.

Exemple MySQL GROUP BY

1. Exemple simple MySQL GROUP BY

Jetons un coup d'œil à la table des commandes dans l'exemple de base de données (yiibaidb). Sa structure est la suivante -

mysql> desc orders;
Copier après la connexion

Que signifie grouper ?

Supposons. vous souhaitez regrouper les valeurs de statut de commande en sous-groupes, vous devez utiliser la clause GROUP BY et spécifier la colonne de statut pour effectuer le regroupement :

SELECT 
    status
FROM
    orders
GROUP BY status;
Copier après la connexion

Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants -

. Que signifie grouper ?

Vous pouvez le constater, la valeur de statut renvoyée par la clause GROUP BY est unique. Il fonctionne comme l'opérateur DISTINCT, comme indiqué dans la requête suivante :

SELECT DISTINCT
    status
FROM
    orders;
Copier après la connexion

Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants :

Que signifie grouper ?

2 MySQL GROUP BY et les fonctions d'agrégation

peuvent être exécutées en utilisant l'agrégat. fonctions Calcule un ensemble de lignes et renvoie une valeur unique. La clause GROUP BY est souvent utilisée avec des fonctions d'agrégation pour effectuer des calculs pour chaque groupe et renvoyer une valeur unique.

Par exemple, si vous souhaitez connaître le nombre de commandes dans chaque statut, vous pouvez utiliser la fonction COUNT et l'instruction de requête de clause GROUP BY, comme indiqué ci-dessous :

SELECT 
    status, COUNT(*) AS total_number
FROM
    orders
GROUP BY status;
Copier après la connexion

Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants -

Que signifie grouper ?

Veuillez vous référer aux tableaux suivants des commandes (commandes) et des détails de la commande (orderdetails), leur diagramme ER est présenté ci-dessous -

Que signifie grouper ?

Pour obtenir le montant total de toutes les commandes par statut, vous pouvez utiliser les détails de la commande table pour connecter la table des commandes et utilisez la fonction SOMME pour calculer le montant total. Veuillez vous référer à la requête suivante :

SELECT 
    status, SUM(quantityOrdered * priceEach) AS amount
FROM
    orders
        INNER JOIN
    orderdetails USING (orderNumber)
GROUP BY status;
Copier après la connexion

L'exécution de la requête ci-dessus donne les résultats suivants -

Que signifie grouper ?

De même, la requête suivante renvoie le numéro de commande et le montant total de chaque commande.

SELECT 
    orderNumber,
    SUM(quantityOrdered * priceEach) AS total
FROM
    orderdetails
GROUP BY orderNumber;
Copier après la connexion

Exécutez la requête ci-dessus et obtenez les résultats suivants -

Que signifie grouper ?

3. Exemple d'expression MySQL GROUP BY

En plus des colonnes, les lignes peuvent être regroupées par expressions. La requête suivante obtient le total des ventes par an.

SELECT 
    YEAR(orderDate) AS year,
    SUM(quantityOrdered * priceEach) AS total
FROM
    orders
        INNER JOIN
    orderdetails USING (orderNumber)
WHERE
    status = 'Shipped'
GROUP BY YEAR(orderDate);
Copier après la connexion

Exécutez la requête ci-dessus et obtenez les résultats suivants -

Que signifie grouper ?

Dans cet exemple, nous utilisons la fonction YEAR pour extraire les données de l'année de la date de commande (orderDate). Seules les commandes avec le statut Expédiée sont incluses. Notez que les expressions apparaissant dans la clause SELECT doivent être les mêmes que celles de la clause GROUP BY.

Clause MySQL GROUP BY et HAVING

Vous pouvez utiliser la clause HAVING pour filtrer les groupes renvoyés par la clause GROUP BY. La requête suivante utilise la clause HAVING pour sélectionner les totaux de ventes annuels à partir de 2013.

SELECT 
    YEAR(orderDate) AS year,
    SUM(quantityOrdered * priceEach) AS total
FROM
    orders
        INNER JOIN
    orderdetails USING (orderNumber)
WHERE
    status = 'Shipped'
GROUP BY year
HAVING year > 2013;
Copier après la connexion

Exécutez la requête ci-dessus et obtenez les résultats suivants -

Que signifie grouper ?

GROUP BY子句:MySQL与标准SQL

标准SQL不允许使用GROUP BY子句中的别名,但MySQL支持此选项。以下查询从订单日期提取年份,并对每年的订单进行计数。该year用作表达式YEAR(orderDate)的别名,它也用作GROUP BY子句中的别名,此查询在标准SQL中无效。

参考以下查询 -

SELECT 
    YEAR(orderDate) AS year, COUNT(orderNumber)
FROM
    orders
GROUP BY year;
Copier après la connexion

执行上面查询,得到以下结果 -

Que signifie grouper ?

MySQL还允许您以升序或降序(标准SQL不能提供)对组进行排序。默认顺序是升序。例如,如果要按状态获取订单数量并按降序对状态进行排序,则可以使用带有DESC的GROUP BY子句,如下查询语句:

SELECT 
    status, COUNT(*)
FROM
    orders
GROUP BY status DESC;
Copier après la connexion

执行上面查询,得到以下结果 -

1Que signifie grouper ?

请注意,在GROUP BY子句中使用DESC以降序对状态进行排序。我们还可以在GROUP BY子句中明确指定ASC,按状态对分组进行升序排序。

【相关推荐:mysql视频教程

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!

Étiquettes associées:
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>
Tutoriels associés
Recommandations populaires
Derniers cours
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal