如何使用 SRF 进行 SQL 查询并仅显示不同的值?

How to do a SQL query with SRFs and display only distinct values?

我正在考虑一种使用单行函数进行查询并仅显示不同值的方法。 假设我有 table 名员工,员工、商店和薪水列,我想使用 SRF MAX(salary) 找出每家商店中薪水最高的员工。如果一家商店有超过 1 名员工赚取 MAX(salary),如何避免在每家商店显示超过 1 名最高收入者?请参阅下面的代码。越简单越好。谢谢!

SELECT employee, emp1.store, emp1.salary
FROM employees emp1
INNER JOIN (SELECT store, salary, MAX(salary) FROM employees GROUP BY store) emp2
ON emp1.store = emp2.store
AND emp1.salary = emp2.salary

可能有更简洁的方法来执行此操作:

    select * from 
    (
       SELECT employee, emp1.store, emp1.salary,
       ROW_NUMBER( ) 
       OVER ( partition by emp1.store order by emp1.salary desc ) rn
       FROM employees emp1
       INNER JOIN (SELECT store,  salary, MAX(salary) FROM employees GROUP BY store, salary) emp2
    ON emp1.store = emp2.store
    AND emp1.salary = emp2.salary
)
where rn = 1

Row_number() 解析函数将赋值为 1,2,3,... 按商店分组。那么您总是只为每个分组选择第 1 行。