首页 > 解决方案 > PostgreSQL GROUP BY 子句

问题描述

我想返回那些在城市方面薪水最高的人的名字。这是我的桌子:

员工表

通过使用 GROUP BY 子句,我能够按城市打印最高薪水。但是如何返回那些薪水最高的员工的名字。我想返回这样的东西:

目标查询. 因为这些人在城市中的薪水最高。

标签: postgresql

解决方案


您可以使用rank窗口函数对每个城市的员工进行排名,然后将该查询与另一个查询包装起来,以获得每个城市的最高员工:

SELECT ename, city, salary
FROM   (SELECT ename, city, salary,
               RANK() OVER (PARTITION BY city ORDER BY salary DESC) AS rk
        FROM   employee) t
WHERE  rk = 1

推荐阅读