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子句的示例
为了更好地理解,我们将使用
Employee 表,该表是我们在PostgreSQL教程的前面部分中创建的。
不使用聚合函数的GROUP BY子句示例
在这里,我们将使用
GROUP BY 子句而不应用聚合函数。因此,我们使用以下命令,该命令从
employee 表中获取记录,并通过
emp_id 将结果分组。
SELECT emp_id
FROM employee
GROUP BY emp_id;
输出
执行上述命令后,我们将得到以下结果:
在上面的示例中,
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 ;
输出
执行上述命令后,我们将得到以下结果:
注意: 在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子句的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子句的Count()函数示例
在下面的示例中,我们使用
COUNT()函数获取
emp_id 的数量。因此,我们选择
名字,并从
employee 表中获得
emp_id 的数量。
SELECT first_name,
COUNT (emp_id)
FROM employee
GROUP BY first_name;
输出
执行上面的命令后,我们将得到以下结果,在
名字列中我们可以看到得到约翰的计数为
2 。
对于每个组,它使用
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;
输出
执行上述命令后,我们将得到以下结果: