数据库教程-Oracle Group By子句

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

在本教程中,您将学习如何使用Oracle GROUP BY子句将行记录分组。

Oracle GROUP BY子句简介

GROUP BY子句在SELECT语句中用于按行或表达式的值将行组合到分组汇总的行中。 GROUP BY子句为每个分组返回一行。

GROUP BY子句通常与AVG()COUNT()MAX()MIN()SUM()之类的集合函数一起使用。 在这种情况下,聚合函数返回每个分组的摘要信息。 例如,给定几个类别的产品,AVG()函数返回每个类别中产品的平均价格。

以下说明了Oracle GROUP BY子句的语法:

SELECT     column_list FROM     T GROUP BY     c1,     c2,      c3; 

GROUP BY子句出现在FROM子句之后。在有提供WHERE子句的情况下,GROUP BY子句必须放在WHERE子句之前。

GROUP BY子句按分组列中的值(如c1c2c3)对行进行分组。GROUP BY子句只能包含聚合或分组的列。

如果要指定应该一次计算的多个分组级别,请使用以下ROLLUP语法:

SELECT     column_list FROM     T GROUP BY     ROLLUP(c1,c2,c3); 

Oracle GROUP BY示例

我们将在示例数据库中使用以下ordersorder_items表进行演示:

Oracle Group By子句

1. Oracle GROUP BY的基本示例

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

SELECT     status FROM     orders GROUP BY     status; 

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

Oracle Group By子句

该语句与使用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; 

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

Oracle Group By子句

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

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

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

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

Oracle Group By子句

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; 

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

Oracle Group By子句

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

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

4. Oracle GROUP BY带有ROLLUP示例

以下语句计算销售额并按customer_idstatus和(customer_idstatus)对其进行分组:

SELECT     customer_id,     status,     SUM( quantity * unit_price ) sales FROM     orders INNER JOIN order_items         USING(order_id) GROUP BY     ROLLUP(         customer_id,         status     ); 

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

Oracle Group By子句

在本教程中,您已学习如何使用Oracle GROUP BY子句将行记录分组。

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 只为你绽放。

本文固定链接: http://kua0.com/2019/01/16/数据库教程-oracle-group-by子句/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注