mysql - 如何计算累积平均值

标签 mysql sql

我想计算我的数据的累积平均值。

在我的查询中,我现在得到每个日期的总和值。但我很困惑如何计算累积平均值。

我的问题

SELECT 
  u.id,
  (SUM(m.protein)),
  DATE(FROM_UNIXTIME(u.create)) AS Cdate,
  goal.what,
  goal.value 
FROM
  `meal` AS m,
  `user_history` AS u 
LEFT JOIN goal 
    ON goal.what = 'Protein' 
    AND goal.user_id = 48 
WHERE u.meal_id = m.id 
  AND u.user_id = 48 
GROUP BY DATE(FROM_UNIXTIME(u.create))

这里我通过 sum(m.protein) 得到总和值,但我想要这里的累积平均值

最佳答案

SET @csum=0;
SELECT 
  u.id,
  (SUM(m.protein)) as sum1,
  (@csum := @csum + sum1) as CSUM,
  DATE(FROM_UNIXTIME(u.create)) AS Cdate,
  goal.what,
  goal.value 
FROM
  `meal` AS m,
  `user_history` AS u 
LEFT JOIN goal 
    ON goal.what = 'Protein' 
    AND goal.user_id = 48 
WHERE u.meal_id = m.id 
  AND u.user_id = 48 
GROUP BY DATE(FROM_UNIXTIME(u.create))

关于mysql - 如何计算累积平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24858748/

相关文章:

mysql - 如何将数据库子查询重写为连接?

mysql - MySQL中如何连接多个表?

php - Laravel 5.4 查询生成器存在 groupBy 问题

mysql - 检查字段是否被修改

sql - 列出 Hive 表属性以创建另一个表

php - 遍历文件夹中的 CSV 文件并使用 PHP 将数据加载到 MySQL

mysql - SQL:使颜色表中的颜色可搜索

php - CakePHP:将计算字段从另一个模型连接到模型

sql - 在 where 子句中使用排名函数派生列 (SQL Server 2008)