oracle group by怎么用

2023年 4月 15日 34.3k 0

在oracle中,“group by”关键字需要和SELECT语句一起使用,用于对查询结果进行分组,可以按行或表达式的值将行组合到分组汇总的行中;语法“SELECT 字段列表 FROM 数据表名 GROUP BY 字段名

在oracle中,“group by”关键字需要和SELECT语句一起使用,用于对查询结果进行分组,可以按行或表达式的值将行组合到分组汇总的行中;语法“SELECT 字段列表 FROM 数据表名 GROUP BY 字段名;”。

本教程操作环境:Windows7系统、Oracle 11g版、Dell G3电脑。

Oracle GROUP BY子句简介

GROUP BY 关键字可以根据一个或多个字段对查询结果进行分组。

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

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

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

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

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

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

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

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

Oracle GROUP BY示例

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

1.png

1. Oracle GROUP BY的基本示例

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

SELECT
status
FROM
orders
GROUP BY
status;

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

2.png

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

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

3.png

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

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

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

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

4.png

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;

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

5.png

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

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

4. Oracle GROUP BY带有ROLLUP示例

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

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

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

6.png

推荐教程:《Oracle教程》

以上就是oracle group by怎么用的详细内容,更多请关注每日运维其它相关文章!

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论