2014-10-30 52 views
0

我在MySQL中有一个表格,用于存储一组实例中的用户会话信息。该表的结构非常简单,有6个字段。从mySQL中提取数据点

  • 货号:37824
  • 时间戳:2014-10-30 23点01分41秒
  • 活动:14
  • 空闲:2
  • 总计:16
  • 服务器:
  • 度量标准每5分钟收集一次。

    我有一个查询,它将过去5分钟的其中一个度量标准的总和。

    select SUM(metric_activeSessions) from metrics_tbl WHERE metric_timeStamp > NOW() - INTERVAL 5 MINUTE 
    

    我想根据这些指标构建一个图表,使用许多伟大的图书馆之一,但尚未确定。

    我希望图表以60分钟为间隔每5分钟显示一次给定度量的总和。

    - 09:00 : 12 
    - 09:05 : 15 
    - 09:10 : 18 
    - 09:15 : 21 
    - 09:20 : 28 
    

    我不知道如何编写SQL查询以这种方式收集信息,并希望有人在那里可以帮助我。

    预先感谢您的任何想法,

    干杯,米奇

    +0

    那么你有查询已经每5分钟运行一次。有什么问题? – Sebas 2014-10-30 23:32:09

    +0

    查询返回NOW()的5分钟进程的SUM,但为了在过去的60分钟内动态构建给定度量的图表,我需要能够返回每5分钟块的SUM之前在查询运行的时间。因此,例如,如果我在上午10:00运行报表,我希望查询返回SUM值,间隔09:00-09:05-09:10 ...直到10:00。 – MitchyBGood 2014-10-30 23:53:21

    回答

    1

    假设metric_timeStamp被格式化为一个mysql时间戳,尝试这样的事情..

    SELECT SUM(metric_activeSessions), MAX(metric_timeStamp) as max_time, MIN(metric_timeStamp) as min_time, 
    FROM metrics_tbl 
    WHERE metric_timeStamp > NOW() - INTERVAL 60 MINUTE 
    GROUP BY unix_timestamp(metric_timeStamp) div 300 
    

    使用,作为一个初始点。我现在正在吃冰淇淋,所以我不能自己做这个,但这是一般的想法。

    编辑:固定的语法问题

    编辑2:我是通过进行10分钟的分组。它改变了5分钟

    编辑3:如果行中包含运行总计,然后更改

    SUM(metric_activeSessions) 
    

    MAX(metric_activeSessions) 
    
    在上面的查询

    +0

    感谢您的快速回复!虽然回应似乎有点不合适。 '5619,5907,6184,6455,6697。我知道这些数字在过去一小时内是不正确的。它增加了一些东西,不能完全解决问题。 – MitchyBGood 2014-10-30 23:54:10

    +0

    如果您在sqlfiddle,http://sqlfiddle.com中创建一个表,并附上一些示例数据,我会为您提供更精确的sql语句 – foxygen 2014-10-30 23:57:07

    +0

    请参阅编辑#3。它看起来像你可能正在存储运行总计 – foxygen 2014-10-31 00:16:00