首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算每个范围的(ate - avg(rate)?

如何计算每个范围的(ate - avg(rate)?
EN

Stack Overflow用户
提问于 2017-06-28 05:22:55
回答 1查看 39关注 0票数 0

这是How to find max records for given range的后续问题

我有几个人工输入的范围,比如1-100101-10001。对于每个范围,我要计算rate - avg(rate for each range)

输入:

代码语言:javascript
复制
Distance Rate
10       5
25       200
50       300
1000     5
2000     2000

输出:

代码语言:javascript
复制
Distance rate - avg(rate for each range)
10       x
25       xx
50       xx
1000     xx
2000     xxx
EN

回答 1

Stack Overflow用户

发布于 2017-06-28 05:29:03

您需要定义范围,然后使用窗口函数。这很简单:

代码语言:javascript
复制
select t.distance, t.rate, v.grp,
       (t.rate - avg(t.rate) over (partition by v.grp)) as deviation
from t outer apply
     (values (case when t.distance <= 100 then '1-100'
                   when t.distance <= 1000 then '101-1000'
                   else 'other'
              end)
     ) v(grp);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44790150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档