首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于从最新的N行中获取distinct phone_numbers平均值的mysql查询

用于从最新的N行中获取distinct phone_numbers平均值的mysql查询
EN

Stack Overflow用户
提问于 2016-08-02 04:23:47
回答 1查看 46关注 0票数 0

我的表是(phone_number,bpm,timestamp)。我想要获得每个phone_number的最新10行的phone_number,avg(bpm)。我试过了..。

代码语言:javascript
复制
SELECT phone_number, AVG( bpm ) 
FROM (
SELECT * 
FROM table_name
WHERE bpm !=0
ORDER BY timestamp DESC
) AS temp
GROUP BY phone_number
HAVING COUNT( * ) <=10

此查询给出的结果为空。我不能在我的mysql版本中使用IN子句。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-02 04:26:39

这是MySQL中的一个难题。最合理的解决方案是使用变量枚举行,然后聚合:

代码语言:javascript
复制
SELECT phone_number, AVG(bpm)
FROM (SELECT t.*,
             (@rn := if(@pn = phone_number, @rn + 1,
                        if(@pn := phone_number, 1, 1)
                       )
             ) as rn
      FROM table_name t CROSS JOIN
            (SELECT @pn := '', @rn := 0) params
      WHERE bpm <> 0
      ORDER BY phone_number, timestamp DESC
     ) t
WHERE rn <= 10
GROUP BY phone_number;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38707474

复制
相关文章

相似问题

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