[英]SQL : count records per 5 minute intervals (including zeros)
我有一個響應表,其中有一個時間戳字段(created_at),一個id和一個外鍵(context_id)
對於給定的上下文,我想查看在5分鍾的間隔內發生了多少響應。
這與以下問題非常相似:
除了不使用SQL Server,我使用的是MySQL,但希望看到更通用的解決方案。
我希望在結果中包含5個間隔,其中有0個響應。
如果從“桶”表開始
bucket_start bucket_end
--
2011-01-01 00:00:00 2011-01-01 00:05:00
2011-01-01 00:05:00 2011-01-01 00:10:00
2011-01-01 00:10:00 2011-01-01 00:15:00
2011-01-01 00:15:00 2011-01-01 00:20:00
那么您可以使用外部聯接獲取缺失的零。
select bucket_start, bucket_end, count(context_id)
from buckets b
left join responses r
on (r.response_time >= b.bucket_start and
r.response_time < b.bucket_end)
group by b.bucket_start, b.bucket_end
生成存儲桶表(或視圖)的方法有很多。 但是最通用的解決方案必須避免使用自動序列生成器(例如PostgreSQL的generate_series())和公用表表達式,因為MySQL不支持它們。 (盡管您也許可以編寫自己的函數來模擬generate_series()。)
因此,最通用的解決方案只是基表。 您還可以從基表中獲得最佳性能,因為您可以索引列。
這樣的表每個日歷年大約需要查看105,000行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.