SQL频率函数就像Excel频率一样

嗨所以你可能知道Excel中有一个Frequency函数,比如:

=FREQUENCY(G3:G693,M683:M693) 

哪些将列数据重新分组到新的组中并计数频率。

那么我怎么能在SQL Server的存储过程中完全一样呢?

非常感谢你的回复…

你会使用join和小心的聚合来做到这一点。 调用两个表格Scores和分Bins 。 以下是一个近似的近似值:

 select b.bin, count(s.score) from Bins b left outer join Scores s on s.score <= b.bin group by b.bin; 

它没有的一件事是“最重要”组的最后一格。 但是,通过select容量限制,这可能不是必要的。 而且,如果您需要该function,请将left outer joinreplace为full outer join

编辑:

以上是累积频率。 哎呀。 这是正确的频率计算:

 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; 

这与边界有类似的问题。 解决这个问题最简单的方法就是select好箱子。 (你可以用SQL修复它,但是这会使查询变得更加复杂。)

请注意在SQL Server 2012中,您可以使用lead()函数replace相关的子查询。

这是frequency()函数的参考,它将解释符号。