Mysql Query无效使用组功能

时间:2014-07-21 18:46:54

标签: mysql sql

我的查询显示当我想获得平均值时无效使用群组功能

SELECT u.id, 
       TRUNCATE(AVG(SUM(m.carbs) / 
                    ( SUM(m.carbs) + SUM(m.fat) + SUM(m.protein) )), 2), 
       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 = 'Carbs' 
                 AND goal.user_id = 50 
WHERE  u.meal_id = m.id 
       AND u.user_id = 50 
GROUP  BY DATE(FROM_UNIXTIME(u.create)) 

示例数据

餐桌

Id carbs fat protein

4   10   30     18   
6   17   4       2

用户历史记录表

Id mealid  date

1   4       20014-07-21
2   6       20014-07-21

需要每天摄取碳水化合物的累计平均值

3 个答案:

答案 0 :(得分:0)

通常在SQL中进行分组时,您需要按非聚合函数的所有字段进行分组(通过聚合,我指的是SUM,COUNT,AVG等)。 尝试将u.id,goal.what和goal.value添加到GROUP BY语句中。 阅读this page上的第一段以获取更多信息。

答案 1 :(得分:0)

分组应该在已定义的现有字段上聚合您的行,而您尝试对不存在/计算的字段进行分组DATE(FROM_UNIXTIME(u.create))

试试这个:

GROUP  BY Cdate

因为Cdate被定义为所选字段中的计算字段

答案 2 :(得分:0)

你不需要吗

GROUP By DATE(FROM_UNIXTIME(u.create)), u.id, goal.what, goal.value