gpt4 book ai didi

sql - 消除最低 2 个值的滚动平均值的功能?

转载 作者:行者123 更新时间:2023-12-04 03:58:55 26 4
gpt4 key购买 nike

这是我的示例数据,其中 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 从每个名称的评级列中获取前 5 个结果,然后消除最低的 2 个结果,然后获取剩余 3 个的平均值。还有一些名称可能没有 5 个结果,所以如果 3 个或以下,我只需要得到结果的平均值,如果有 4 个结果,我需要消除最低值并平均剩余的 3 个。还要获得正确的 5 个以前的结果需要按日期排序。这可能吗?感谢您提前抽出时间。

最佳答案

好痛啊!我认为最简单的方法可能是使用数组,然后使用 unnest() 和聚合:

select t.*, r.current_rating
from (select t.*,
array_agg(rating) over (partition by name order by date rows between 4 preceding and current row) as rating_5
from t
) t cross join lateral
(select avg(r) as current_rating
from (select u.*
from unnest(t.rating_5) with ordinality u(r, n)
where r is not null
order by r desc desc
limit 3
) r
) r

关于sql - 消除最低 2 个值的滚动平均值的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63368876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com