簡體   English   中英

sql頻率函數就像Excel頻率一樣

[英]sql frequency function just like Excel Frequency

您好,您可能知道Excel中有一個Frequency函數,例如:

=FREQUENCY(G3:G693,M683:M693) 

它將把列數據重新分組為新組並計數頻率。

那么如何在存儲過程中的SQL Server中執行完全相同的操作?

非常感謝你的回復...

您可以使用聯接和仔細的聚合來做到這一點。 將這兩個表稱為ScoresBins 下面是一個近似的例子:

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

它沒有的一件事是“比其他所有事物都更大”組的最終分類。 但是,通過正確選擇垃圾箱限制,這可能不是必需的。 並且,如果您需要該功能,請用full outer join替換left outer join 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;

邊界也有類似的問題。 最簡單的修復方法是選擇好垃圾桶。 (您可以在SQL中修復它,但它會使查詢復雜得多。)

請注意,在SQL Server 2012 +中,您可以將相關子查詢替換為lead()函數。

frequency()函數的參考,它將解釋該符號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM