Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql查询组函数的使用无效_Mysql_Sql - Fatal编程技术网

Mysql查询组函数的使用无效

Mysql查询组函数的使用无效,mysql,sql,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`

我的查询显示,当我想要获得平均值时,组函数的使用无效

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

需要每天摄入的碳水化合物的累积平均值

通常,在SQL中进行分组时,您需要按所有非聚合函数的字段进行分组(通过聚合,我指的是总和、计数、平均值等)。 尝试将u.id、goal.what和goal.value添加到GROUPBY语句中。
有关详细信息,请阅读上的第一段。

分组应将行聚集在已定义的现有字段上,而您尝试在不存在/已计算的字段上分组
日期(从\u UNIXTIME(u.create))

试试这个:

GROUP  BY Cdate

由于Cdate定义为所选字段中的计算字段

您不需要

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

我不认为有人会向右滚动那么远…尝试重新格式化。为什么要进行一半老式联接,一半新式联接?对我来说,这让我更难理解。你不能做
avg(sum())
。我不知道你想要什么,所以我不知道如何解决这个问题。示例数据和期望的结果总是有用的。mysql没有这样的限制。您可以选择所需的任何字段,无论是否分组或聚合。您确实可以。。。你不会得到合理的结果。