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_Average - Fatal编程技术网

MySQL:可以计算最大值(平均值(字段))吗?

MySQL:可以计算最大值(平均值(字段))吗?,mysql,average,Mysql,Average,我当前的查询是: SELECT entry_id, user_id, cat_id, AVG( rating ) as avg_rate FROM `entry_rate` WHERE 1 GROUP BY entry_id cat_id与不同类别相关:1、2、3或4 是否有一种方法可以在不设置额外表格的情况下找到每个类别中每个用户的最大平均值?对于每个用户id,返回的最大平均速率可能为4 请访问以下链接,例如: 可能不是最有效的方法: select user_id, cat_id, MAX(

我当前的查询是:

SELECT entry_id, user_id, cat_id, AVG( rating ) as avg_rate
FROM `entry_rate`
WHERE 1
GROUP BY entry_id
cat_id
与不同类别相关:1、2、3或4

是否有一种方法可以在不设置额外表格的情况下找到每个类别中每个用户的最大平均值?对于每个用户id,返回的最大平均速率可能为4

请访问以下链接,例如:


可能不是最有效的方法:

select user_id, cat_id, MAX(avg_rate)
FROM (
    SELECT entry_id, user_id, cat_id, AVG( rating ) as avg_rate
    FROM entry_rate
    GROUP BY entry_id, user_id, cat_id) t
GROUP BY user_id, cat_id

你可以这样说

SELECT entry_id, user_id, cat_id, AVG( rating ) as avg_rate

FROM 'entry_rate'

GROUP BY entry_id

order by AVG( rating ) DESC

limit 1

这将通过
avg(rating)
对结果进行排序,并选择第一行。并且可以使
limit 1
1
选择第二个最大元素

选择条目id、用户id、类别id、平均(评级)作为平均速率 从
entry\u rate
按条目分组\u id
按平均速率描述限值1订购

您还需要在内部查询中按条目\u id和用户\u id进行分组。。另外,
其中不需要1
。@BlueRaja,你说得对,我刚刚复制了他的查询,其中也有这些问题。修正了。@tloflin和@BlueRaja-天哪!你们是巫师!我已经有一段时间没有运气了(就算我是新手…)。非常感谢。顺便问一下,第五行末尾的“t”是什么意思?这是我不理解的一个元素,“t”是您从中选择的实体的名称。看看如何得到“from”关键字,然后是括号中的子查询?好的,它将子查询视为一个表,因此它需要表的名称(例如,如果要将它与另一个表联接,或者如果另一个表有一个“user_id”字段,您需要区分它们)。因此,如果我理解正确,您可以将子查询命名为“not”,即使您在查询的后面没有引用它。(我看到你可以省略标签为…)这也是一个很好的答案!谢谢(但是对于绿色复选标记来说有点太慢了!)欢迎来到StackOverflow!请使用格式使您的答案更具可读性。此外,在你的答案中添加上下文会让未来的读者更了解它。
SELECT entry_id, user_id, cat_id, AVG( rating ) as avg_rate

FROM 'entry_rate'

GROUP BY entry_id

order by AVG( rating ) DESC

limit 1