2012-10-31 123 views
0

我有一個MySQL表,其中存儲了客戶的星級評定,所以不同的clientcode:MySQL的 - 選擇具有最高平均

裁判,clientcode,日期,評論,明星

同樣clientcode可以出現很多次。

我需要選擇具有最高平均星號的不同客戶端代碼。任何建議如何得到這個

+0

請告訴我們你已經嘗試過:) –

+1

請出示一些示例數據,什麼是所需的輸出 –

回答

0
SELECT 
    t1.* 
FROM 
    table t1 
WHERE 
    t1.stars IN 
    (
     SELECT 
      MAX(t2.stars) 
     FROM 
      table t2 
     WHERE 
      t2.clientcode = t1.clientcode 
    ) 
+0

這裏沒有平均壽。 –

0

這會顯示不同的clientcode

SELECT avg(stars) from t1 group by clientcode; 
1
SELECT 
    t1.clientcode clientcode, 
    t2.sum sum, 
    t3.count count, 
    CASE t3.count WHEN 0 THEN 0 ELSE t2.sum/t3.count END average 
FROM 
    t1 
    LEFT JOIN 
    (
     SELECT 
      clientcode, 
      SUM(stars) sum 
     FROM t1 
     GROUP BY clientcode 
    ) t2 ON t1.clientcode = t2.clientcode 
    LEFT JOIN 
    (
     SELECT 
      clientcode, 
      COUNT(stars) count 
     FROM t1 
     GROUP BY clientcode 
    ) t3 ON t1.clientcode = t3.clientcode 
0

請嘗試以下給出的查詢恆星的平均值。

select avg(`stars`) AS `avgstar` ,`clientcode` from `t1` group by `clientcode` order by `avgstar` DESC 

這裏group by clientcode將獲得創紀錄的在Descinding爲了每個不同clientcodeorder by avgstar其中avgstar is average of stars field value for each clientcode

感謝

+0

感謝大家的建議。我用這個,因爲它是最簡單的(因此對我來說最簡單!)。它工作出色。當我實現它時,我收集了一個數組中的結果,使我能夠選擇任何前5個結果,這正是我需要的結果 – David

+0

嗨,如果你喜歡這個答案,那麼請將它投票並接受這個答案:) –