2017-02-05 4 views
0

私はDateTimeというスタンプを付けて送信されたシステムメッセージを格納するデータベーステーブルMessagesを持っています。SQL Serverデータベース内の別の列との関連で1つの列の平均を決定する

平均1日あたりに送信されるメッセージの数を判断する最も簡単な方法を理解する必要があります。私はAVG() SQL Serverの関数について知っていますが、何らかの理由で私はちょうど失敗したとして、正しく書かれたクエリを取得することはできません。

数学なしの簡素化SELECT文は次のとおりです。私はちょうど一日あたりに送信されたメッセージの平均を提供する必要が

1 Hi!     2016-10-25 21:02:45.130 
2 Hi back to you.  2016-10-25 22:02:45.100 
3 This is a message. 2016-10-26 14:02:45.130 
4 Indeed it is.  2016-10-27 20:01:45.130 
5 Final test.   2016-11-10 13:02:45.130 
6 Response to test. 2016-11-10 19:00:00.130 

:に似たリターンを取り戻すだろう

select MessageID, MessageText, DateTimeStamp 
from Messages 

。いかなる援助も感謝します。

+0

あなたにも予想される出力を表示することができますか? –

+0

正直なところ、数値平均を探しているだけです。したがって、上記の例では、2つのメッセージが10-25、1が10-26、1が10-27、2が11-10に送信された場合、1日の平均メッセージは1日あたり1.5メッセージになります。明らかに、範囲を扱うために最終的なクエリを調整するかもしれませんが、今のところ、数学の構文のほんの一部が役に立ちます。 – optionsix

答えて

3

これを行うには、sumウィンドウ関数を使用できます。

select 
1.0*sum(count(*)) over()/count(distinct cast(DateTimeStamp as date)) as avg_messages 
from Messages 

以上単に

select 1.0*count(*)/count(distinct cast(DateTimeStamp as date)) 
from Messages 
+0

これはまさに私が探していたものです。ありがとう! – optionsix

関連する問題