Maison >base de données >Oracle >Comment utiliser le groupe Oracle par

Comment utiliser le groupe Oracle par

青灯夜游
青灯夜游original
2022-03-17 12:47:5210512parcourir

Dans Oracle, le mot-clé "group by" doit être utilisé avec l'instruction SELECT pour regrouper les résultats de la requête. Les lignes peuvent être combinées en lignes récapitulatives regroupées par ligne ou valeur d'expression "SELECT field list" FROM nom de la table de données GROUP. PAR nom du champ ;".

Comment utiliser le groupe Oracle par

L'environnement d'exploitation de ce tutoriel : système Windows 7, version Oracle 11g, ordinateur Dell G3.

Introduction à la clause Oracle GROUP BY

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 est utilisée dans l'instruction SELECT pour combiner des lignes en lignes récapitulatives regroupées par la valeur de la ligne ou de l'expression. La clause GROUP BY renvoie une ligne pour chaque groupe. La clause

GROUP BY est généralement utilisée avec des fonctions d'agrégation telles que AVG(), COUNT(), MAX(), MIN() et SUM(). Dans ce cas, la fonction d'agrégation renvoie des informations récapitulatives pour chaque groupe. Par exemple, étant donné plusieurs catégories de produits, la fonction AVG() renvoie le prix moyen des produits dans chaque catégorie.

Ce qui suit illustre la syntaxe de la clause Oracle GROUP BY :

SELECT
    字段列表
FROM
    数据表名
GROUP BY
    字段名;

La clause GROUP BY apparaît après la clause FROM. Lorsqu'une clause WHERE est fournie, la clause GROUP BY doit être placée avant la clause WHERE.

La clause GROUP BY regroupe les lignes selon les valeurs de la colonne de regroupement telles que c1, c2 et c3. La clause GROUP BY ne peut contenir que des colonnes agrégées ou groupées.

Si vous souhaitez spécifier plusieurs niveaux de regroupement qui doivent être calculés en même temps, utilisez la syntaxe ROLLUP suivante :

SELECT
    字段列表
FROM
    数据表名
GROUP BY
    ROLLUP(c1,c2,c3);

Exemple Oracle GROUP BY

Nous utiliserons les ordres et order_items pour démonstration : ordersorder_items表进行演示:

Comment utiliser le groupe Oracle par

1. Oracle GROUP BY的基本示例

以下语句使用GROUP BY子句在orders表中查找唯一的订单状态:

SELECT
    status
FROM
    orders
GROUP BY
    status;

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

Comment utiliser le groupe Oracle par

该语句与使用DISTINCT运算符的以下语句具有相同的效果:

SELECT
    DISTINCT status
FROM
    orders;

2. Oracle GROUP BY聚合示例

以下语句返回客户的订单数量:

SELECT
    customer_id, COUNT( order_id )
FROM
    orders
GROUP BY
    customer_id
ORDER BY
    customer_id;

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

Comment utiliser le groupe Oracle par

在这个例子中,我们按客户编号来分组订单,并使用COUNT()函数返回每个组的订单数量。

要获得更有意义的数据,可以按以下方式将orders表与customers表一起连接:

SELECT
    name, COUNT( order_id )
FROM
    orders
INNER JOIN customers
        USING(customer_id)
GROUP BY
    name
ORDER BY
    name;

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

Comment utiliser le groupe Oracle par

3. Oracle GROUP BY表达式示例

以下示例按年份对订单进行分组,并返回每年订单的数量。参考以下查询语句 -

SELECT
    EXTRACT(YEAR FROM order_date) YEAR,
    COUNT( order_id )
FROM
    orders
GROUP BY
    EXTRACT(YEAR FROM order_date)
ORDER BY
    YEAR;

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

Comment utiliser le groupe Oracle par

在这个例子中,我们使用EXTRACT()函数从订单的日期中获取年份信息。

与前面的例子不同,这里使用了一个在GROUP BY子句中返回年份的表达式。

4. Oracle GROUP BY带有ROLLUP示例

以下语句计算销售额并按customer_idstatus和(customer_idstatus

Comment utiliser le groupe Oracle par

1. Exemple de base d'Oracle GROUP BYComment utiliser le groupe Oracle par

Les instructions suivantes utilisent GROUP BY code >Clause trouve le statut de commande unique dans la table <code>orders :

SELECT
    customer_id,
    status,
    SUM( quantity * unit_price ) sales
FROM
    orders
INNER JOIN order_items
        USING(order_id)
GROUP BY
    ROLLUP(
        customer_id,
        status
    );
Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants -

🎜Comment utiliser le groupe Oracle par🎜🎜Cette instruction a le même effet que l'instruction suivante en utilisant le DISTINCT opérateur Effet : 🎜rrreee🎜🎜<span style="max-width:90%">2. Exemple d'agrégation Oracle GROUP BY</span>🎜🎜🎜L'instruction suivante renvoie la quantité commandée par le client : 🎜rrreee🎜Execute l'instruction de requête ci-dessus, obtenez les résultats suivants -🎜🎜<img src="https://img.php.cn/upload/image/272/423/267/164749220659479Comment%20utiliser%20le%20groupe%20Oracle%20par" title="164749220659479Comment utiliser le groupe Oracle par" alt="Comment utiliser le groupe Oracle par">🎜🎜Dans cet exemple, nous regroupons les commandes par numéro de client et utilisons la fonction <code>COUNT() pour renvoyer la quantité commandée pour chaque groupe. 🎜🎜Pour obtenir des données plus significatives, vous pouvez connecter la table commandes et la table clients ensemble comme suit : 🎜rrreee🎜Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants : 🎜 🎜Comment utiliser le groupe Oracle par🎜🎜🎜 3. Exemple d'expression Oracle GROUP BY🎜🎜🎜L'exemple suivant regroupe les commandes par année et renvoie la quantité de commandes pour chaque année. Reportez-vous à l'instruction de requête suivante -🎜rrreee🎜Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants -🎜🎜Comment utiliser le groupe Oracle par🎜🎜Dans cet exemple, nous utilisons la fonction EXTRACT() pour obtenir les informations sur l'année à partir de la date de la commande. 🎜🎜Différent de l'exemple précédent, ceci utilise une expression qui renvoie l'année dans la clause GROUP BY. 🎜🎜🎜4. Oracle GROUP BY avec exemple ROLLUP🎜🎜🎜L'instruction suivante calcule les ventes par customer_id, status et (customer_id, status) les regroupent : 🎜rrreee🎜Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants-🎜🎜🎜🎜🎜Tutoriel recommandé : " 🎜Tutoriel Oracle🎜"🎜

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!

Déclaration:
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