PostgreSQL 分组依据 PostgreSQL Order by 子句 PostgreSQL Have 子句 PostgreSQL 分组依据 在本节中,我们将了解PostgreSQL中GROUP BY子句的工作。我们还看到了 GROUP BY 子句如何与SUM() 函数、COUNT()、JOIN 子句、多列以及没有聚合函数一起使用的示例。 PostgreSQL 的 GROUP BY 条件与 SELECT 命令一起使用,也可以用来减少结果中的冗余。 PostgreSQL GROUP BY 子句 最重要的是,此子句用于将行拆分为多个组,其中 GROUP BY 条件收集多条记录中的数据,并按一列或多列设置结果。 并且每个组都可以应用一个聚合函数,如COUNT() 函数用于获取组中的项目数,SUM() 函数用于分析项目的总和。 PostgreSQL group by 子句的语法 GROUP BY 子句的基本语法如下: SELECT column-list FROM table_name WHERE [conditions ] GROUP BY column1, column2....columnN ORDER BY column1, column2....columnN 以下是上述语法中使用的参数: Columns-list:用于选择需要分组的列,可以是column1, column2,...columnN。 我们还可以将 SELECT 命令的附加条件与 GROUP BY 子句一起使用。 在PostgreSQL 中],GROUP BY 子句的作用如下: PostgreSQL GROUP BY 子句示例 为了更好地理解,我们将采用Employee表,该表是我们在 PostgreSQL 教程的前面部分中创建的。 不使用聚合函数的 GROUP BY 子句示例在这里,我们将使用GROUP BY子句而不应用聚合函数。所以,我们使用下面的命令,它从*员工*表中获取记录,并通过emp_id**对结果进行分组。 SELECT emp_id FROM employee GROUP BY emp_id; 输出 执行上述命令后,我们将得到以下结果: 在上面的例子中,GROUP BY子句的工作方式与DISTINCT条件类似,它帮助我们从结果集中删除匹配的行。 使用 PostgreSQL GROUP BY Clasue 的 SUM() 函数示例 在这里,我们使用带有GROUP BY条件的聚合函数。 例如,如果我们想要得到的总和工资,其FIRST_NAME是约翰的员工\表。因此,我们使用where子句和 GROUP BY 子句来获取 John 的工资。 以下命令用于在GROUP BY条件的帮助下获取John 的工资总和: SELECT first_name, SUM(SALARY) FROM employee where first_name = 'John' GROUP BY first_name ; 输出 执行上述命令后,我们将得到以下结果: 注意:在employee表中,我们有first_name的冗余为john。使用此命令后,由于我们使用了 where 子句,所以合并了两个 john 的工资,并显示了 john 工资的总和。 在下面的命令中,我们使用ORDER BY条件通过GROUP BY子句按升序显示所有员工的工资: SELECT first_name, SUM(SALARY) FROM employee GROUP BY first_name ORDER BY SUM (salary) asc; 输出 执行上述命令后,我们将得到以下输出: 使用 PostgreSQL GROUP BY 子句的 JOIN 条件示例 在下面的示例中,我们使用GROUP BY子句和INNER JOIN子句来获取每个员工的工资总和。 在以下命令中,我们将员工表与员工详细信息\表连接起来,并按员工姓名连接(组合)员工。 SELECT first_name || ' ' || last_name as full_name, SUM (salary) salary FROM employee INNER JOIN employee_details USING (emp_id) GROUP BY full_name ORDER BY salary; 输出 执行上述命令后,我们将得到以下结果: 使用 PostgreSQL GROUP BY 子句的 Count() 函数示例 在下面的示例中,我们使用COUNT()函数来获取emp_id的数量。因此,我们选择first_name并从员工\表中获取emp_id的计数。 SELECT first_name, COUNT (emp_id) FROM employee GROUP BY first_name; 输出 执行上述命令后,我们将得到以下结果,我们可以看到,在first_name列中,John的计数为2。 对于每个组,它使用COUNT() 函数返回行数。GROUP BY 子句将employee 中的行分组,并按emp_id列中的值对它们进行分组。 使用 PostgreSQL GROUP BY 子句的多列示例 在这种情况下,我们将在GROUP BY子句的帮助下取一列或多列并获取记录。 在下面的示例中,我们采用的多列是emp_id 和 first_name使用 GROUP BY 子句,该子句将*员工*****表中*的行通过它们的值\分开emp_id 和 first_name SELECT emp_id, first_name, SUM(salary) FROM employee GROUP BY first_name, emp_id ORDER BY emp_id; **输出** 执行上述命令后,我们将得到以下结果:**** PostgreSQL Order by 子句 PostgreSQL Have 子句