每10行基于时间戳

时间:2014-02-10 12:38:58

标签: sql sql-server sql-server-2008 tsql

我有一个包含信号名称,值和时间戳的表。这些信号以1个样本/秒的采样率记录。现在我想绘制一个月数值的图表,系统在几秒钟内执行它变得非常沉重。所以我的问题是“有没有办法查看1个值/分钟,换句话说我想看到每隔60行。”

2 个答案:

答案 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)

如果您要绘制月数,即使是小时平均值也可能足够详细。