首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL - MySQL -按和限制问题的平均分组

SQL - MySQL -按和限制问题的平均分组
EN

Stack Overflow用户
提问于 2014-12-10 16:33:30
回答 2查看 170关注 0票数 0

我正在收集来自各种远程传感器的数据,它们每隔几秒钟发送一次数据。我记录了遥感器的名称和上次从那个仪器接收数据以来的时差。每个仪器的数据都是随机的,而不是固定的间隔。

这张桌子看起来是:

代码语言:javascript
运行
复制
id  instname  timediff
 1   inst01     1000
 2   inst02     1100
 3   inst01     1210
 4   inst03      900  
etc.

id列正在自动递增。

我要做的是得到每台仪器的最后10个值的平均时间差。

我最接近的是:

代码语言:javascript
运行
复制
SELECT 
    inst AS Instrument, 
    AVG(diff / 1000) AS Average
FROM
    (SELECT 
        instname AS inst, timediff AS diff
    FROM
        log
        WHERE
        instname = 'Inst01' 
    ORDER BY id DESC
    LIMIT 0 , 10) AS two

很明显,这只适用于一种乐器,我也不相信这个极限也能正常工作。我不知道这些仪器的名字,也不知道我将从多少仪器收集数据。

如何使用SQL获得每个仪器的最后10个值的平均时间差?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-10 16:37:03

有点痛苦。我认为最简单的方法是使用变量。以下查询列举了每种仪器的读数:

代码语言:javascript
运行
复制
select l.*,
       (@rn := if(@i = instname, @rn + 1, 
                  if(@i := instname, 1, 1)
                 )
       ) as rn
from log l cross join
     (select @i := '', @rn := 0)
order by instname, id desc;

然后,您可以使用它作为子查询来进行计算:

代码语言:javascript
运行
复制
select instname, avg(timediff)
from (select l.*,
             (@rn := if(@i = instname, @rn + 1, 
                        if(@i := instname, 1, 1)
                       )
             ) as rn
      from log l cross join
           (select @i := '', @rn := 0)
      order by instname, id desc
     ) l
where rn <= 10
group by instname;
票数 2
EN

Stack Overflow用户

发布于 2014-12-10 17:11:02

尝试使用这个方法:在较少的数据上进行测试,但应该有效。

代码语言:javascript
运行
复制
SELECT 
    inst AS Instrument, 
     diff AS Average
FROM
    (SELECT 
        t1.instname AS inst,AVG(t1.timediff / 1000) AS diff
    FROM
        inst t1,inst t2
        WHERE
        t1.instname = t2.instname   group by t1.instname ORDER BY t2.id DESC
    LIMIT 0,10
    ) AS two
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27406154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档