【发布时间】:2021-05-05 09:59:42
【问题描述】:
我在一些旧代码中发现了这个查询,但无论如何我都不是一个有经验的 SQL/数据管理员,有人可以在不使用 rank() 函数的情况下将这个轮询变成一些基本的查询吗?
SELECT memberId, year, AVG(income) avg_income
FROM (
SELECT *, RANK() OVER (PARTITION BY memberId ORDER BY year DESC) rnk
FROM income
)
WHERE rnk = 1
GROUP BY memberId, year
此查询应该执行以下操作:
对于每个有工作的成员,请找到他们最近一年工作的avg_income。
我们如何将一些使用rank() over 的“花哨”SQL 查询转换为使用HAVING 子句的语句?
【问题讨论】:
-
有可能。请分享一些示例数据。
-
我不知道我是否可以分享公司数据,我认为如果可能的话,它可以在没有数据的情况下完成,因为数据可以是任何东西,但想法/逻辑在这里更重要.感谢您的确认。
标签: sql sqlite window-functions