SQL 使用 GROUP BY 和 OVER
在本文中,我们将介绍如何使用 SQL 中的 GROUP BY 和 OVER 来对数据进行分组和分析。
阅读更多:SQL 教程
GROUP BY
GROUP BY 子句是 SQL 中一个重要的功能,它用于将数据按照指定的列进行分组。通过 GROUP BY,我们可以对分组后的数据进行聚合操作,如计算总和、平均值、最大值等。
下面是一个使用 GROUP BY 的示例:
SELECT Department, COUNT(*) as Total_Employee
FROM Employees
GROUP BY Department;
在上述示例中,我们通过 GROUP BY Department
将 Employees 表中的数据按照部门进行了分组。然后,我们使用 COUNT(*) 来统计每个部门的员工数量,并将结果命名为 Total_Employee。这样,我们就可以得到一个包含每个部门员工数量的结果集。
除了 COUNT(*),我们还可以使用其他的聚合函数,如 SUM、AVG、MAX、MIN 等。通过在 SELECT 子句中使用这些函数,我们可以对每个分组的数据进行聚合计算。
OVER
OVER 子句是 SQL 的一种窗口函数,它允许我们在查询的结果集中进行分组、排序和聚合操作。通过 OVER,我们可以在查询结果中添加一列或多列的汇总结果,而不需要使用 GROUP BY。
下面是一个使用 OVER 的示例:
SELECT Employee_Name, Salary,
AVG(Salary) OVER (PARTITION BY Department) as Avg_Salary
FROM Employees;
在上述示例中,我们使用 OVER 子句在结果集中添加了一列 Avg_Salary。该列使用 AVG() 聚合函数计算每个部门的平均工资。通过 PARTITION BY,我们指定了按照部门进行分组。
与 GROUP BY 不同,OVER 子句可以在查询结果中添加汇总结果,而不需要改变结果集的行数。这使得我们可以在一次查询中得到更丰富和灵活的结果。
总结
在本文中,我们介绍了 SQL 中的 GROUP BY 和 OVER 的使用。GROUP BY 允许我们对数据进行分组并进行聚合操作,以便得到统计结果。而 OVER 则是一种窗口函数,它在查询结果集中添加汇总结果,而不需要使用 GROUP BY。
这些功能使得 SQL 查询更加灵活和强大,可以满足各种不同的数据分析和汇总需求。掌握了 GROUP BY 和 OVER 的使用,在进行复杂数据分析和报表生成时将更加得心应手。