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 join
replace为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()
函数的参考,它将解释符号。