我有一个包含信号名称,值和时间戳的表。这些信号以1个样本/秒的采样率记录。现在我想绘制一个月数值的图表,系统在几秒钟内执行它变得非常沉重。所以我的问题是“有没有办法查看1个值/分钟,换句话说我想看到每隔60行。”
答案 0 :(得分:2)
您可以使用row_number()
函数枚举行,然后使用模运算来获取行:
select signalname, value, timestamp
from (select t.*,
row_number() over (order by timestamp) as seqnum
from table t
) t
where seqnum % 60 = 0;
如果您的数据确实是常规的,您还可以提取秒值并检查该值是0
:
select signalname, value, timestamp
from table t
where datepart(second, timestamp) = 0
这假设timestamp
以适当的日期/时间格式存储。
答案 1 :(得分:1)
您可以使用一分钟的平均值来代替采样:
select name
, min(timestamp)
, avg(value)
from Yourtable
group by
name
, datediff(minute, '2013-01-01', timestamp)
如果您要绘制月数,即使是小时平均值也可能足够详细。