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 112 番目の最大要素を選択できます

于 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 に答える