【发布时间】:2020-08-12 02:27:12
【问题描述】:
这是我希望输出的 current_Rating 列的示例数据。
Date Name Subject Importance Location Time Rating Current_rating
12/08/2020 David Work 1 London - - 4
1/08/2020 David Work 3 London 23.50 4 3.66
2/10/2019 David Emails 3 New York 18.20 3 4.33
2/08/2019 David Emails 3 Paris 18.58 4 4
11/07/2019 David Work 1 London - 3 4
1/06/2019 David Work 3 London 23.50 4 4
2/04/2019 David Emails 3 New York 18.20 3 5
2/03/2019 David Emails 3 Paris 18.58 5 -
12/08/2020 George Updates 2 New York - - 2
1/08/2019 George New Appointments5 London 55.10 2 -
我需要使用一个函数来获取 current_Rating 列中的值。current_Rating 从每个名称的 rating 列中获取前 5 个结果,然后消除最低的 2 个结果,然后获取剩余 3 个的平均值。还有一些名称可能没有 5 个结果,所以如果 3 个或以下,我只需要获得结果的平均值,如果 4 个结果我需要消除最低值并对剩余的 3 个进行平均。还要获得正确的 5 个以前的结果需要按日期排序。这可能吗?提前感谢您的时间。
【问题讨论】:
-
听起来你需要创建一个自定义的aggregate function。
-
您只需要前 3 个值的平均数吗?你需要函数来得到这个结果吗?您只需要一个名称或全部名称的平均结果吗?有很多不清楚的地方。
-
@Abdusoli 对不起,如果我不清楚。它需要是过去 5 个结果中最高 3 个数字的平均值。它需要一个函数来获取每个条目这个滚动平均值。如果该名称没有以前的会议,则它将返回 null。
标签: sql postgresql average window-functions