4

我当前的查询内容如下:

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

有没有一种方法可以在不设置额外表格的情况下找到每个类别中每个用户的最大平均值?每个 user_id 的回报可能是 4 最大 avg_rate

例如,请访问以下链接:

http://lh5.ggpht.com/_rvDQuhTddnc/S8Os_77qR9I/AAAAAAAAA2M/IPmzNeYjfCA/s800/table1.jpg

4

4 回答 4

5

可能不是最有效的方法:

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
于 2010-04-12T23:35:50.960 回答
4

你可以做出这样的声明。

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选择第二个最大元素

于 2012-09-18T20:12:24.450 回答
2
SELECT s.user_id,s.cat_id,max(s.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) as s 
GROUP BY  s.user_id,s.cat_id
于 2010-04-12T23:38:46.383 回答
0

SELECT entry_id, user_id, cat_id, AVG( rating ) as avg_rate FROM entry_rate GROUP BY entry_id order by avg_rate desc limit 1;

于 2020-09-08T17:27:53.880 回答