首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类似Excel频率的sql频率函数

类似Excel频率的sql频率函数
EN

Stack Overflow用户
提问于 2014-06-27 07:09:36
回答 1查看 627关注 0票数 1

您好,您可能知道Excel中有一个频率函数,如下所示:

代码语言:javascript
复制
=FREQUENCY(G3:G693,M683:M693) 

它会将列数据重新分组到新的组中,并计算频率。

那么我如何在SQL Server的存储过程中做同样的事情呢?

非常感谢你的回复……

EN

回答 1

Stack Overflow用户

发布于 2014-06-27 08:09:56

您可以使用连接和仔细的聚合来完成此操作。将这两个表命名为ScoresBins。下面是一个近似值:

代码语言:javascript
复制
select b.bin, count(s.score)
from Bins b left outer join
     Scores s
     on s.score <= b.bin
group by b.bin;

它没有的一件事是“比其他一切都重要”组的最后一个bin。但是,通过正确选择bin限制,这可能就不是必要的了。而且,如果您需要该功能,请用full outer join替换left outer join

编辑:

上面是累积频率。糟了。以下是正确的频率计算:

代码语言:javascript
复制
select b.bin, b.nextbin, count(s.score)
from (select b.*, (select min(b2.bin) from Bins b2 where b2.bin > b.bin) as nextbin
      from Bins b
     ) b left outer join
     Scores s
     on s.score >= b.bin and (s.score < b.nextbin or b.nextbin is null)
group by b.bin, b.nextbin;

边界也有类似的问题。解决这个问题的最简单的方法是选择好垃圾箱。(您可以在SQL中修复它,但这会使查询变得更加复杂。)

注意:在SQL Server2012+中,您可以用lead()函数替换相关子查询。

Here是解释该符号的frequency()函数的引用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24441627

复制
相关文章

相似问题

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