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子句的工作格式如下:
我们不能在
HAVING子句中使用列别名,因为,评估HAVING子句时,无法访问 SELECT 子句中定义的列别名。
having和where子句之间的区别
让我们看看
HAVING子句和WHERE子句之间的区别:
具有子句 |
Where子句 |
HAVING子句允许我们根据定义的条件过滤行组。 |
WHERE子句允许我们根据定义的条件过滤行。 |
HAVING子句对行组很有用。 |
WHERE子句仅适用于行。 |
PostgreSQL HAVING子句的示例
让我们看看一些在PostgreSQL中具有having子句的示例。因此,在这里,我们将使用在PostgreSQL教程的早期主题中创建的
employee 表。
使用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 显示工资总额>。
此后,我们将在上面的命令中添加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 HAVING子句的COUNT()函数示例
下面的命令用于在GROUP BY子句的帮助下确定员工人数:
SELECT first_name, COUNT (emp_id)
FROM employee
GROUP BY first_name;
输出
一旦执行了上面的命令,我们将得到以下输出;它显示员工人数:
此后,我们将添加HAVING子句在上述命令中选择雇员少于两个的
first_name :
SELECT first_name, COUNT (emp_id)
FROM employee
GROUP BY first_name
HAVING COUNT (emp_id)< 2;
输出
执行上述命令后,我们将得到以下结果: