Oracle Having语句
一、Oracle Having语句 语法
在 Oracle 中,HAVING 子句与 GROUP BY 子句一起使用,以限制条件为 TRUE 的返回行组。
语法:
SELECT expression1, expression2, ... expression_n,
aggregate_function (aggregate_expression)
FROM tables
WHERE conditions
GROUP BY expression1, expression2, ... expression_n
HAVING having_condition;
参数说明:
- expression1, expression2, ... expression_n:指定未封装在聚合函数中的表达式。这些表达式必须包含在 GROUP BY 子句中。
- aggregate_function:它指定聚合函数,即 SUM、COUNT、MIN、MAX 或 AVG 函数。
- aggregate_expression:它指定聚合函数所基于的列或表达式。
- tables:它指定要从中检索记录的表。
- conditions:它指定要选择的记录必须满足的条件。
- have_conditions:它指定仅应用于聚合结果以限制返回行组的条件。
二、Oracle Having语句 案例:使用 GROUP BY SUM 函数
让我们来一张表“salesdepartment”
CREATE TABLE "SALESDEPARTMENT"
( "ITEM" VARCHAR2(4000),
"SALE" NUMBER,
"BILLING_ADDRESS" VARCHAR2(4000)
)
/
表数据如下:
执行以下SQL:
SELECT item, SUM(sale) AS "Total sales"
FROM salesdepartment
GROUP BY item
HAVING SUM(sale) < 1000;
输出结果为:
三、Oracle Having语句 案例:使用 GROUP BY COUNT 函数
让我们以“customers”表为例
CREATE TABLE "CUSTOMERS"
( "NAME" VARCHAR2(4000),
"AGE" NUMBER,
"SALARY" NUMBER,
"STATE" VARCHAR2(4000)
)
/
表数据如下:
执行以下SQL语句:
SELECT state, COUNT(*) AS "Number of customers"
FROM customers
WHERE salary > 10000
GROUP BY state
HAVING COUNT(*) >= 2;
输出结果为:
四、Oracle Having语句 案例:使用 GROUP BY MIN 函数
让我们来看一张“employees”表
CREATE TABLE "EMPLOYEES"
( "EMP_ID" NUMBER,
"NAME" VARCHAR2(4000),
"AGE" NUMBER,
"DEPARTMENT" VARCHAR2(4000),
"SALARY" NUMBER
)
/
表数据如下:
执行以下SQL语句:
SELECT department,
MIN(salary) AS "Lowest salary"
FROM employees
GROUP BY department
HAVING MIN(salary) < 15000;
输出结果为:
五、Oracle Having语句 案例:带有 GROUP BY MAX 函数
执行以下SQL语句:
SELECT department,
MAX(salary) AS "Highest salary"
FROM employees
GROUP BY department
HAVING MAX(salary) > 30000;
输出结果为:
热门文章
优秀文章