[英]Mysql - select distinct clientcode with the highest average
我有一个mysql表,其中存储了客户端的星级,因此:
ref,clientcode,date,comment,stars
相同的客户端代码可以出现多次。
我需要选择平均星数最高的独特客户代码。 任何建议如何获得这个
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
t1.*
FROM
table t1
WHERE
t1.stars IN
(
SELECT
MAX(t2.stars)
FROM
table t2
WHERE
t2.clientcode = t1.clientcode
)
这将显示不同客户代码的星级平均值
SELECT avg(stars) from t1 group by clientcode;
请尝试下面给出的查询。
select avg(`stars`) AS `avgstar` ,`clientcode` from `t1` group by `clientcode` order by `avgstar` DESC
在这里, group by clientcode
将获得针对每个不同客户clientcode
记录, clientcode
进行order by avgstar
其中avgstar is average of stars field value for each clientcode
按降序排列avgstar is average of stars field value for each clientcode
。
谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.