【问题标题】:Average on column grouped by another column由另一列分组的列的平均值
【发布时间】:2016-06-11 11:28:56
【问题描述】:

我有一个 MySQL 服务器,其表 myTable 包含以下列:

nid            int(10)   unsigned
temperature    float     unsigned
timestamp      int(10)   unsigned

这张表有大约 300.000 条记录,并且每天都在增长。为了处理如此大量的数据,我想找到一些 SQL 查询,它们可以为我提供基于间隔的平均值,例如“每小时平均值”、“每日平均值”等。

有什么想法吗?

【问题讨论】:

  • group by 和日期/时间函数浮现在脑海中。
  • 另外,看看分区。

标签: mysql sql database


【解决方案1】:

我终于得到了答案。我为了得到我可以使用的每日平均值:

 SELECT DATE(FROM_UNIXTIME(timestamp)) AS Date, 
        AVG(temperature) AS AvgTemp
 FROM   `myTable`
 GROUP BY DATE(FROM_UNIXTIME(timestamp))

为了获得每小时平均值(每天),我使用:

 SELECT DATE(FROM_UNIXTIME(timestamp)) AS Date,
        HOUR(FROM_UNIXTIME(timestamp)) AS Hour, 
        AVG(temperature) as AvgTemp
 FROM   `myTable`
 GROUP BY DATE(FROM_UNIXTIME(timestamp)),
          HOUR(FROM_UNIXTIME(timestamp))

【讨论】:

    猜你喜欢
    • 2021-08-07
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    相关资源
    最近更新 更多