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;  

输出结果为:

热门文章

优秀文章