php - 如何从mysql中按小时存储日期值的表中获取每日总计的平均值和标准偏差?

标签 php mysql

我确实有一个表,用于存储按小时、按天计算的错误总数。

我需要计算每天错误总数的平均值,我正在尝试这样的事情:

SELECT 
  error_code, 
  AVG(total) as avg, 
  STDDEV_SAMP(total) as std
FROM 
  error_monitoring 
WHERE
  date_sub(curdate(), interval 30 day) <= date 
GROUP BY
  error_code 

但是查询的结果基于表中的每小时值,而不是每日总计。

数据库中的表格如下:

id | error_code | total | average | standard_deviation | date 
1  | W0334      | 2131  | 81      | 163.349            | 2016-12-20 23:00:00
2  | W0096      | 910   | 45      | 132.915            | 2016-12-20 15:00:00
3  | W0334      | 120   | 81      | 163.349            | 2016-12-20 08:00:00

那么,我如何根据每日总数来计算这个值?

最佳答案

如果你想要“按天平均”,你可以计算总数,然后除以天数:

SELECT error_code, SUM(total) / COUNT(DISTINCT date(date)) as avg
FROM error_monitoring
WHERE date_sub(curdate(), interval 30 day) <= date
GROUP BY error_code 

您的代码还包含STDDEV_SAMP()。如果您也想要该计算,那么您将需要使用子查询,按天聚合。假设每天所有错误代码均可用:

SELECT error_code, AVG(day_total), STDDEV_SAMP(day_total)
FROM (SELECT error_code, date(date) as dte, SUM(total) as day_total 
      FROM error_monitoring
      WHERE date_sub(curdate(), interval 30 day) <= date
      GROUP BY error_code, date(date)
     ) em
GROUP BY error_code;

关于php - 如何从mysql中按小时存储日期值的表中获取每日总计的平均值和标准偏差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41379159/

相关文章:

mysql - 有人可以解释为什么这个左外连接会这样吗?

javascript - 使用提交限制验证密码时出错

php - Twitter 应用程序开发 : PHP or javascript. ..请帮助

javascript - 项目和总计的 jQuery 发票计算

php - 从不同主机 php 连接 Google Cloud SQL

mysql - 如何动态转换或以相同的方式进行此 mysql 查询?

php - 为新表添加另一行时,在 3 个表中插入一行

sql - 如何从客户端安全地查询MySQL DB

MySQL 连接表 WHERE 子句

php - 如何通过 cURL 使用 stream_notification_callback