PostgreSQL Having 子句

2025年3月17日 | 阅读 3 分钟

在本节中,我们将了解 PostgreSQL 中 HAVING 子句 的工作原理。

having 子句用于指定组或聚合的搜索条件。 它通常与 GROUP BY 子句一起使用,根据详细条件过滤组或聚合。

PostgreSQL having 子句的语法

PostgreSQL HAVING 子句的基本语法如下

在上面的语法中,我们使用了以下参数

参数描述
GROUP BY 子句它用于返回按 column1 分组的行。
Having 子句它用于定义过滤集合的条件。

注意:在 PostgreSQL 中,我们可以添加 SELECT 命令的其他子句,例如 LIMIT、JOIN 和 FETCH。 随后,HAVING 子句在 SELECT 子句之前工作。

PostgreSQL 中,HAVING 子句按以下格式工作

PostgreSQL Having clause

我们不能在 HAVING 子句 中使用列别名,因为在评估 HAVING 子句时,无法访问 SELECT 子句中定义的列别名。

having 子句和 where 子句之间的区别

让我们看看 HAVING 子句 和 WHERE 子句之间的区别

Having 子句Where 子句
HAVING 子句允许我们根据定义的条件过滤行组。WHERE 子句允许我们根据定义的条件过滤行。
HAVING 子句对于行组很有用。WHERE 子句仅应用于行。

PostgreSQL HAVING 子句的示例

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

PostgreSQL Having clause

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

在下面的示例中,我们使用带有 SUM() 函数的 GROUP BY 子句来识别每个员工的总工资

输出

在下面的示例中,我们使用带有 SUM() 函数的 GROUP BY 子句 来识别每个员工的总 工资:

输出

执行上述命令后,我们将获得以下输出,该输出根据他们的 emp_id 显示每个员工的工资总和。

PostgreSQL Having clause

之后,我们将在上面的命令中添加 HAVING 子句,用于选择工资超过 25000 的员工

输出

执行上述命令后,我们将获得以下结果,该结果显示工资超过 25000 的员工

PostgreSQL Having clause

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

以下命令用于借助 GROUP BY 子句识别员工人数

输出

一旦我们执行了上面的命令,我们将得到下面的输出; 该输出显示员工人数

PostgreSQL Having clause

之后,我们将在上面的命令中添加 HAVING 子句,以选择员工人数少于两个的 first_name

输出

执行上述命令后,我们将获得以下结果

PostgreSQL Having clause