SQL分组查询深入理解:含最高工资与科目汇总

3星 · 超过75%的资源 需积分: 34 11 下载量 32 浏览量 更新于2024-09-13 收藏 40KB DOCX 举报
"SQL分组查询" SQL分组查询是一种用于对数据库中的数据进行聚合处理的方法,它允许我们将数据按照一个或多个列的值进行分类,并对每个类别的数据执行统计函数,如SUM、AVG、COUNT、MIN和MAX等。在SQL中,最常用的分组关键字是`GROUP BY`,但正如描述中所提及,分组查询并不仅仅局限于`GROUP BY`语句。 在提供的示例中,我们首先创建了一个名为`testTable`的表,包含`id`、`name`、`dept`(部门)和`salary`(薪水)四个字段,并插入了一些数据。接着展示了如何找出所有部门中工资最高的两名员工。 方法一是通过子查询来实现。这里先找出每个部门中工资最高的员工ID(按薪水降序排列),然后在主查询中通过`IN`操作符找出这些ID对应的全部信息。这种方法利用了`WHERE`子句和`TOP 2`关键字来限制结果。 方法二是使用窗口函数`ROW_NUMBER()`。这个函数在每个分组(这里指部门)内为每一行分配一个唯一的行号,按照薪水降序排列。之后,我们只需要选择行号小于等于2的行,就能得到每个部门工资最高的两名员工。 接下来,我们看第二个例子,涉及到了一个分数表`testScore`,包含姓名、科目和分数三个字段。期望查询结果是将同一名学生的不同科目成绩合并到一行。这需要使用`GROUP BY`和聚合函数来完成,但示例中没有给出具体查询语句。通常,可以使用`PIVOT`操作或者多次`JOIN`来实现这样的转换。例如,我们可以先按姓名分组,然后对每个分组使用`MAX`函数结合`CASE`语句来获取每个科目最高分。 SQL分组查询是一个强大的工具,可以让我们以各种方式汇总和分析数据。它不仅可以与聚合函数结合,还可以与子查询、窗口函数和复杂的逻辑一起使用,以满足复杂的数据分析需求。在实际应用中,熟练掌握分组查询能够帮助我们更有效地管理和理解存储在数据库中的信息。