• 技术文章 >数据库 >Oracle

    oracle group by怎么用

    青灯夜游青灯夜游2022-03-17 12:47:52原创807

    在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.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_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
        );

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

    6.png

    推荐教程:《Oracle教程

    以上就是oracle group by怎么用的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:oracle group by
    上一篇:完全掌握Oracle分区 下一篇:oracle如何去掉重复的数据
    PHP小白到大牛直播班第二十期

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• oracle怎么删除唯一约束• oracle怎么进行查询去重• oracle怎么查询所有字段的数据• 怎么查看oracle是64还是32位• Oracle怎么删除分区数据• oracle的函数有哪些
    1/1

    PHP中文网