我有一個MySQL表,其中存儲了客戶的星級評定,所以不同的clientcode:MySQL的 - 選擇具有最高平均
裁判,clientcode,日期,評論,明星
同樣clientcode可以出現很多次。
我需要選擇具有最高平均星號的不同客戶端代碼。任何建議如何得到這個
我有一個MySQL表,其中存儲了客戶的星級評定,所以不同的clientcode:MySQL的 - 選擇具有最高平均
裁判,clientcode,日期,評論,明星
同樣clientcode可以出現很多次。
我需要選擇具有最高平均星號的不同客戶端代碼。任何建議如何得到這個
SELECT
t1.*
FROM
table t1
WHERE
t1.stars IN
(
SELECT
MAX(t2.stars)
FROM
table t2
WHERE
t2.clientcode = t1.clientcode
)
這裏沒有平均壽。 –
這會顯示不同的clientcode
SELECT avg(stars) from t1 group by clientcode;
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
請嘗試以下給出的查詢恆星的平均值。
select avg(`stars`) AS `avgstar` ,`clientcode` from `t1` group by `clientcode` order by `avgstar` DESC
這裏group by clientcode
將獲得創紀錄的在Descinding爲了每個不同clientcode
和order by avgstar
其中avgstar is average of stars field value for each clientcode
。
感謝
感謝大家的建議。我用這個,因爲它是最簡單的(因此對我來說最簡單!)。它工作出色。當我實現它時,我收集了一個數組中的結果,使我能夠選擇任何前5個結果,這正是我需要的結果 – David
嗨,如果你喜歡這個答案,那麼請將它投票並接受這個答案:) –
請告訴我們你已經嘗試過:) –
請出示一些示例數據,什麼是所需的輸出 –