您现在的位置是:群英 > 数据库 > 关系型数据库
Oracle中group by有什么作用,用法是什么
Admin发表于 2022-05-10 17:55:272425 次浏览
这篇文章给大家分享的是“Oracle中group by有什么作用,用法是什么”,文中的讲解内容简单清晰,对大家认识和了解都有一定的帮助,对此感兴趣的朋友,接下来就跟随小编一起了解一下“Oracle中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示例

我们将在示例数据库中使用以下ordersorder_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_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有什么作用,用法是什么内容,欢迎关注群英网络资讯频道,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: group by
相关信息推荐
2022-07-12 17:50:36 
摘要:这篇文章主要介绍了orcale中的to_number方法使用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
2022-08-03 17:43:30 
摘要:oracle查询隔离级别的方法:1、利用“declare trans_id... begin trans_id :=...;end;”语句,让当前session处于一个事务中;2、利用“SELECT s.sid, s.serial#,CASE...WHEN 0 THEN '....'ELSE '...' END AS...”语句查询隔离级别即可。
2022-08-03 17:35:49 
摘要:oracle的区间查询语句:1、“select * from 表名 where rownum <= 数值”语句,该语句查询表中指定前几条数据;2、“select * from 表名 where rownum <= 结束值 minus select * from 表名 where rownum < 起始值”语句,该语句查询表中指定区间内的数据。
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部