PostgreSQL教程

PostgreSQL HAVING

在本节中,我们将了解 HAVING子句在PostgreSQL中的工作。
Haveing子句用于指定组或集合的搜索条件。经常与GROUP BY子句一起使用,以根据详细条件过滤组或集合。

具有子句的PostgreSQL语法

PostgreSQL的基本语法HAVING子句如下:
SELECT column1, aggregate_function (column2)
FROM table1, table2  
WHERE [ conditions ]  
GROUP BY column1, column2  
HAVING [ conditions ]  
ORDER BY column1, column2  
在上面的语法中,我们使用了以下参数:
参数 说明
GROUP BY 它用于返回按column1分组的行。
Having 用于定义过滤集合的条件。
注意: 在PostgreSQL中,我们可以添加SELECT命令的其他子句,例如LIMIT,JOIN和FETCH。随后,HAVING子句在SELECT子句之前起作用。
在 PostgreSQL 中,HAVING子句的工作格式如下:
PostgreSQL Have子句
我们不能在 HAVING子句中使用列别名,因为,评估HAVING子句时,无法访问 SELECT 子句中定义的列别名。

having和where子句之间的区别

让我们看看 HAVING子句和WHERE子句之间的区别:
具有子句 Where子句
HAVING子句允许我们根据定义的条件过滤行组。 WHERE子句允许我们根据定义的条件过滤行。
HAVING子句对行组很有用。 WHERE子句仅适用于行。

PostgreSQL HAVING子句的示例

让我们看看一些在PostgreSQL中具有having子句的示例。因此,在这里,我们将使用在PostgreSQL教程的早期主题中创建的 employee 表。
PostgreSQL具有子句

使用PostgreSQL HAVING子句的SUM()函数示例

在下面的示例中,我们将GROUP BY子句与SUM一起使用()函数来确定每个员工的总薪资:
SELECT emp_id, SUM (salary)
FROM employee
GROUP BY emp_id;
输出
在下面的示例中,我们使用带有 SUM()函数的 GROUP BY 子句,以标识每个员工的工资总额 :
SELECT emp_id, SUM (salary)
FROM employee
GROUP BY emp_id;
输出
执行上述命令后,我们将获得以下输出,该输出根据每个雇员的 emp_id 显示工资总额>。
PostgreSQL Have子句
此后,我们将在上面的命令中添加HAVING子句选择薪水超过25000的员工:
SELECT emp_id, first_name, SUM (salary)
FROM employee
GROUP BY first_name, emp_id
HAVING SUM (salary) > 25000
order by first_name DESC;
输出
执行上述命令后,我们将得到以下结果,其中显示薪水超过25000的员工:
PostgreSQL Have子句

使用PostgreSQL HAVING子句的COUNT()函数示例

下面的命令用于在GROUP BY子句的帮助下确定员工人数:
SELECT first_name, COUNT (emp_id)
FROM employee
GROUP BY first_name;
输出
一旦执行了上面的命令,我们将得到以下输出;它显示员工人数:
PostgreSQL Have子句
此后,我们将添加HAVING子句在上述命令中选择雇员少于两个的 first_name :
SELECT first_name, COUNT (emp_id)
FROM employee
GROUP BY first_name
HAVING COUNT (emp_id)< 2;
输出
执行上述命令后,我们将得到以下结果:
PostgreSQL Have子句
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4