Maison >base de données >Oracle >Comment utiliser le groupe Oracle par
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 ;".
L'environnement d'exploitation de ce tutoriel : système Windows 7, version Oracle 11g, ordinateur Dell G3.
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);
Nous utiliserons les ordres
et order_items pour démonstration : orders
和order_items
表进行演示:
1. Oracle GROUP BY的基本示例
以下语句使用GROUP BY
子句在orders
表中查找唯一的订单状态:
SELECT status FROM orders GROUP BY status;
执行上面查询语句,得到以下结果 -
该语句与使用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;
执行上面查询语句,得到以下结果 -
在这个例子中,我们按客户编号来分组订单,并使用COUNT()
函数返回每个组的订单数量。
要获得更有意义的数据,可以按以下方式将orders
表与customers
表一起连接:
SELECT name, COUNT( order_id ) FROM orders INNER JOIN customers USING(customer_id) GROUP BY name ORDER BY name;
执行上面查询语句,得到以下结果 -
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;
执行上面查询语句,得到以下结果 -
在这个例子中,我们使用EXTRACT()
函数从订单的日期中获取年份信息。
与前面的例子不同,这里使用了一个在GROUP BY
子句中返回年份的表达式。
4. Oracle GROUP BY带有ROLLUP示例
以下语句计算销售额并按customer_id
,status
和(customer_id
,status
1. Exemple de base d'Oracle GROUP BY
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 -
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 : 🎜 🎜🎜🎜🎜 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 -🎜🎜🎜🎜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!