问题描述
我想查找最近一段时间的前N个名字(值最高的名字)。对于这些名称,我想获得历史价值。
此问题Select top 10 records for each category
我尝试了以下操作:
base_table (period,name,value)
CREATE VIEW TOP3 AS
SELECT DISTINCT a.*,COUNT(*) as rank
FROM base_table AS a
LEFT JOIN base_table AS a2
ON a.period = a2.period and a.value <= a2.value
GROUP BY a.value
HAVING COUNT(*) <= 3
ORDER BY period,rank;
这使我成为每个时期的前三名。
period | name | value | rank
092020 Joe 100 1
092020 Jane 90 2
092020 Doe 80 3
082020 Jan 100 1
082020 Doc 99 2
082020 Pete 98 3
.
.
.
但不是理想的结果。
假设这些是最近一个月的前三名:
period | name | value | rank
092020 Joe 100 1
092020 Jane 90 2
092020 Doe 80 3
现在,我希望获得这些的历史记录,即使它们不在上个月的前3名中,也是如此:
period | name | value | rank
092020 Joe 100 1
092020 Jane 90 2
092020 Doe 80 3
082020 Joe 95 4
082020 Jane 94 5
082020 Doe 7 50
. . . .
. . . .
. . . .
092019 Joe 42 20
092019 Doe 34 35
092019 Jane 1 100
仅供参考,我正在使用PROC SQL在SAS中工作,因此对我而言,诸如CTE,窗口函数和其他内容之类的细腻内容对我不可用。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)