PostgreSQL教程

PostgreSQL GROUP BY

在本节中,我们将了解PostgreSQL中 GROUP BY 子句的工作方式。我们还看到了示例GROUP BY子句如何与 SUM()函数,COUNT(),JOIN子句,多列以及没有聚合函数一起使用的示例
PostgreSQL GROUP SELECT命令使用BY条件,它也可用于减少结果的冗余。

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

PostgreSQL GROUP BY子句的示例

为了更好地理解,我们将使用 Employee 表,该表是我们在PostgreSQL教程的前面部分中创建的。
PostgreSQL Group By 不使用聚合函数的GROUP BY子句示例
在这里,我们将使用 GROUP BY 子句而不应用聚合函数。因此,我们使用以下命令,该命令从 employee 表中获取记录,并通过 emp_id 将结果分组。
SELECT emp_id
FROM employee
GROUP BY emp_id;
输出
执行上述命令后,我们将得到以下结果:
PostgreSQL Group By
在上面的示例中, GROUP BY 子句的作用与 DISTINCT 条件,它可以帮助我们从结果集中删除匹配的行。
使用PostgreSQL GROUP BY Clasue的SUM()函数示例
在这里,我们正在使用具有 GROUP BY 条件的聚合函数。
例如,如果要获取 薪水之和 employee 表中的 first_name John 。因此,我们将 where 子句与GROUP BY子句一起使用以获取John的薪水。
以下命令用于获取 John的薪金总和 GROUP BY 条件的帮助下:
SELECT first_name, SUM(SALARY)   
FROM employee
where first_name = 'John'
GROUP BY first_name ;
输出
执行上述命令后,我们将得到以下结果:
PostgreSQL Group By
注意: 在employee表中,我们将first_name冗余为john。使用此命令后,由于我们使用where子句,并合并了约翰薪水的总和,因此两个约翰的薪水被合并。
在以下命令中,我们使用 ORDER BY 条件以 升序 GROUP显示所有员工的薪水BY 子句:
SELECT first_name, SUM(SALARY)   
FROM employee
GROUP BY first_name
ORDER BY SUM (salary) asc;
输出
执行上述命令后,我们将获得以下输出:
PostgreSQL Group By 使用PostgreSQL GROUP BY子句的JOIN条件示例
在以下示例中,我们将 GROUP BY 子句与 INNER JOIN 子句以获取每个雇员的薪水之和。
在以下命令中,我们将 employee表与employee_details 表和 Concat(合并)雇员的姓名。
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 使用PostgreSQL GROUP BY子句的Count()函数示例
在下面的示例中,我们使用 COUNT()函数获取 emp_id 的数量。因此,我们选择 名字,并从 employee 表中获得 emp_id 的数量。
SELECT first_name,
COUNT (emp_id)
FROM employee
GROUP BY first_name;
输出
执行上面的命令后,我们将得到以下结果,在 名字列中我们可以看到得到约翰的计数为 2
PostgreSQL Group By
对于每个组,它使用 COUNT()函数返回行数。然后GROUP BY子句将雇员中的行分为几组,并按 emp_id 列中的值将它们分组。
使用PostgreSQL GROUP BY子句的多列示例
在此示例中,我们将使用一个或多个列,并借助 GROUP BY 子句获取记录。
在下面的示例中,多个我们要使用的列是使用GROUP BY子句的 emp_id和first_name 列,该子句将 employee 表中的行通过其值分开,并按组划分 emp_id和first_name 的值。
SUM()函数用于评估每位员工的总工资。
SELECT emp_id, first_name, SUM(salary) 
FROM employee
GROUP BY first_name, emp_id
ORDER BY emp_id;
      
输出
执行上述命令后,我们将得到以下结果:
PostgreSQL Group By
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4