Home > Database > Oracle > body text

How to use oracle group by

青灯夜游
Release: 2022-03-17 12:47:52
Original
10502 people have browsed it

In Oracle, the "group by" keyword needs to be used together with the SELECT statement to group query results. Rows can be combined into grouped summary rows by row or expression value; syntax "SELECT field list FROM data table name GROUP BY field name;".

How to use oracle group by

The operating environment of this tutorial: Windows 7 system, Oracle 11g version, Dell G3 computer.

Introduction to Oracle GROUP BY clause

The GROUP BY keyword can group query results based on one or more fields.

The GROUP BY clause is used in the SELECT statement to combine rows into grouped summary rows by the value of the row or expression. The GROUP BY clause returns one row for each group.

The GROUP BY clause is typically used with aggregate functions such as AVG(), COUNT(), MAX(), MIN(), and SUM(). In this case, the aggregate function returns summary information for each grouping. For example, given several categories of products, the AVG() function returns the average price of the products in each category.

The following illustrates the syntax of the Oracle GROUP BY clause:

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

The GROUP BY clause appears after the FROM clause. When a WHERE clause is provided, the GROUP BY clause must be placed before the WHERE clause.

The GROUP BY clause groups rows by the values ​​in the grouping column (such as c1, c2 and c3). The GROUP BY clause can only contain aggregated or grouped columns.

If you want to specify multiple grouping levels that should be calculated at once, use the following ROLLUP syntax:

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

Oracle GROUP BY Example

We will demonstrate using the following orders and order_items tables in the sample database:

How to use oracle group by

1. Basic Example of Oracle GROUP BY

The following statement uses the GROUP BY clause to find unique order statuses in the orders table:

SELECT
    status
FROM
    orders
GROUP BY
    status;
Copy after login

Execute the above query statement and get the following results-

How to use oracle group by

This statement has the same effect as the following statement using the DISTINCT operator:

SELECT
    DISTINCT status
FROM
    orders;
Copy after login

2. Oracle GROUP BY aggregation example

The following statement returns the customer’s order quantity:

SELECT
    customer_id, COUNT( order_id )
FROM
    orders
GROUP BY
    customer_id
ORDER BY
    customer_id;
Copy after login

Execute the above query statement , and get the following results -

How to use oracle group by

In this example, we group the orders by customer number and use the COUNT() function to return the quantity of order.

To obtain more meaningful data, you can join the orders table with the customers table as follows:

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

Execute the above query statement , get the following results-

How to use oracle group by

3. Oracle GROUP BY expression example

The following example is by year Groups the orders and returns the number of orders per year. Refer to the following query statement-

SELECT
    EXTRACT(YEAR FROM order_date) YEAR,
    COUNT( order_id )
FROM
    orders
GROUP BY
    EXTRACT(YEAR FROM order_date)
ORDER BY
    YEAR;
Copy after login

Execute the above query statement and get the following results-

How to use oracle group by

In this example, we use EXTRACT()The function gets the year information from the date of the order.

Unlike the previous example, this uses an expression that returns the year in the GROUP BY clause.

4. Oracle GROUP BY with ROLLUP example

The following statement calculates the sales volume by customer_id,## Group them with #status and (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
    );
Copy after login
Execute the above query statement and get the following results-

How to use oracle group by

Recommended tutorial: "

Oracle Tutorial"

The above is the detailed content of How to use oracle group by. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template