现在,我们可以知道哪些名称是重复的,以及它们的重复次数:
五、显示重复数据中每组最小或者最大值
就像在上面的例子中看到的那样,group by子句会致使对字段列表中的每个唯一值应用聚合函数。应该注意,没有放进group by字段清单中的栏与被聚合的值不必放在同一行。这里给出一个例子,以下查询显示每个部门中的最高工资:
SELECT dept_id,
name,
gender,
max(salary) as max_salary
FROM employees
GROUP BY dept_id;
name,
gender,
max(salary) as max_salary
FROM employees
GROUP BY dept_id;
我们还想要显示拿最高工资的那些人的有关信息。然而,返回的结果确是:
问题在于,工资是唯一被聚合的栏,因为Max()聚合函数只被用于它。因此,显示的是各个group by字段中遇到的第一个name和gender值。 通过查看这个表您会发现,虽然Ralph Teller是1号部门的唯一员工,但是只有Jon Simpson拿到了$4500。我们知道,应该显示Peter Jonson,但是查询引擎选择了遇到的dept_id为2的第一个名称和性别。