[英]How do I average the last 5 minutes of entries from a SQL database?
我有一個表,用於存儲時間,heart_rate和player_id。 我需要以某種方式獲取最近五分鍾的平均心率數據,並根據玩家ID對每個平均值進行分組。
另一種選擇是使用DATEDIFF
SELECT AVG(heart_rate) AS heart_rate,
player_id
FROM tablename
WHERE DATEDIFF(MINUTE, time, GETDATE()) < 5
GROUP BY player_id
這部分是對Donal回答的回應(對於評論太長了)。
你不希望使用下列內容:
WHERE datepart(minute, (time - GETDATE())) < 5
有兩個原因。 首先,這不能利用time
索引。 即,該計算是不可估計的。 其次,除非time
值在將來,否則減法是倒數。
一種更好的寫方法是:
select player_id, avg(heart_rate)
from table t
where time >= dateadd(minute, -5, getdate())
group by player_id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.