PostgreSQL Group By17 Mar 2025 | 4 分钟阅读 在本节中,我们将了解 PostgreSQL 中 GROUP BY 子句的工作原理。我们还将看到 GROUP BY 子句与 SUM() 函数、COUNT()、JOIN 子句、多个列以及没有聚合函数 一起使用的示例。 PostgreSQL GROUP BY 条件与 SELECT 命令一起使用,它也可以用于减少结果中的冗余。 PostgreSQL GROUP BY 子句最重要的是,此子句用于将行分成组,其中 GROUP BY 条件在多个记录中收集数据并按一个或多个列设置结果。 并且每个组都可以应用聚合函数,例如 COUNT() 函数 用于获取组中的项目数,而 SUM() 函数 用于分析项目的总和。 PostgreSQL group by 子句的语法GROUP BY 子句的基本语法如下所示 以下是上述语法中使用的参数 列列表: 用于选择需要分组的列,它可以是 column1, column2,...columnN。 我们还可以将 SELECT 命令的附加条件与 GROUP BY 子句一起使用。 在 PostgreSQL 中,GROUP BY 子句的工作原理如下 ![]() PostgreSQL GROUP BY 子句的示例为了更好地理解,我们将使用在 PostgreSQL 教程的前面部分中创建的 Employee 表。 ![]()
在这里,我们将使用 GROUP BY 子句,而不应用聚合函数。因此,我们使用以下命令,该命令从 employee 表中获取记录,并通过 emp_id 对结果进行分组。 输出 在执行上述命令后,我们将获得以下结果 ![]() 在上面的例子中,GROUP BY 子句的工作方式类似于 DISTINCT 条件,这有助于我们从结果集中删除匹配的行。
在这里,我们将聚合函数与 GROUP BY 条件一起使用。 例如,如果我们想获取 salary 的总和,其中 first_name 为 John 在 employee 表中。因此,我们使用 where 子句与 GROUP BY 子句来获取 John 的薪水。 以下命令用于借助 GROUP BY 条件获取 John 的薪水的总和 输出 在执行上述命令后,我们将获得以下结果 ![]() 注意:在 employee 表中,我们有 first_name 重复为 john。在使用此命令后,两个 john 的薪水被合并,因为我们使用了 where 子句,并显示了 john 薪水的总和。在下面的命令中,我们使用 ORDER BY 条件以 升序 显示所有员工的薪水,并使用 GROUP BY 子句 输出 在执行上述命令后,我们将获得以下输出 ![]()
在下面的示例中,我们使用 GROUP BY 子句与 INNER JOIN 子句来获取每个员工薪水的总和。 在以下命令中,我们将 employee 表与 employee_details 表联接,并按员工姓名 连接(合并) 员工。 输出 执行上述命令后,我们将获得以下结果 ![]()
在下面的示例中,我们使用 COUNT() 函数来获取 emp_id 的数量。因此,我们选择 first_name,并从 employee 表中获取 emp_id 的计数。 输出 在执行上述命令后,我们将获得以下结果,在 first_name 列中,我们可以看到我们得到 John 的计数为 2。 ![]() 对于每个组,它使用 COUNT() 函数 返回行数。并且 GROUP BY 子句将 employee 中的行分成组,并按 emp_id 列中的值对它们进行分组。
在这里,我们将使用一个或多个列,并在 GROUP BY 子句的帮助下获取记录。 在下面的示例中,我们使用的多个列是 emp_id 和 first_name,使用 GROUP BY 子句,它通过它们的值分隔 employee 表中的行,并用于每个 emp_id 和 first_name 组。 并且 SUM() 函数用于评估每个员工的总薪水。 输出 执行上述命令后,我们将获得以下结果 ![]() |
我们请求您订阅我们的新闻通讯以获取最新更新。