Oracle GROUP BY
在Oracle GROUP BY子句中,SELECT语句用于从多个记录中收集数据并将结果按一个或多个列分组。
语法:
SELECT expression1, expression2, ... expression_n,
aggregate_function (aggregate_expression)
FROM tables
WHERE conditions
GROUP BY expression1, expression2, ... expression_n;
参数:
expression1,expression2,... expression_n: 它指定未封装在聚合函数中的表达式。这些表达式必须包含在GROUP BY子句中。
aggregate_function: 它指定聚合函数,即SUM,COUNT,MIN,MAX或AVG函数。
aggregate_expression: 它指定聚合函数所基于的列或表达式。
table: 它指定要从中检索的表记录。
conditions: 它指定选择记录必须满足的条件。
Oracle GROUP BY示例:(带有SUM函数)
让我们看一个表"salesdepartment"
salesdepartment table:
CREATE TABLE "SALESDEPARTMENT"
( "ITEM" VARCHAR2(4000),
"SALE" NUMBER,
"BILLING_ADDRESS" VARCHAR2(4000)
)
/
执行此查询:
SELECT item, SUM(sale) AS "Total sales"
FROM salesdepartment
GROUP BY item;
输出
上面的示例将显示每个项目的总销售额。
Oracle GROUP BY示例:(具有COUNT函数)
让我们以"客户"表为例
我们在这里创建一个名为CUSTOMERS的表。该表没有任何主键。
CUSTOMERS table:
CREATE TABLE "CUSTOMERS"
( "NAME" VARCHAR2(4000),
"AGE" NUMBER,
"SALARY" NUMBER,
"STATE" VARCHAR2(4000)
)
/
执行此查询:
SELECT state, COUNT(*) AS "Number of customers"
FROM customers
WHERE salary > 10000
GROUP BY state;
输出:
Oracle GROUP BY示例:(具有MIN功能)
让我们使用一个表" employees"(雇员)
employees table:
CREATE TABLE "EMPLOYEES"
( "EMP_ID" NUMBER,
"NAME" VARCHAR2(4000),
"AGE" NUMBER,
"DEPARTMENT" VARCHAR2(4000),
"SALARY" NUMBER
)
/
执行此查询:
SELECT department,
MIN(salary) AS "Lowest salary"
FROM employees
GROUP BY department;
输出:
Oracle GROUP BY示例:(具有MAX函数)
在此示例中,我们使用上面给出的"员工"表。
执行此查询:
SELECT department,
MAX(salary) AS "Highest salary"
FROM employees
GROUP BY department;
输出:
