我有一个mysql表,其中存储了客户的星级评定,所以:
REF,clientcode,日期,评论,星
相同的客户端代码可以多次出现。
我需要选择平均星数最多的不同客户端代码。任何建议如何得到这个
答案 0 :(得分: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
答案 1 :(得分:0)
SELECT
t1.*
FROM
table t1
WHERE
t1.stars IN
(
SELECT
MAX(t2.stars)
FROM
table t2
WHERE
t2.clientcode = t1.clientcode
)
答案 2 :(得分:0)
这将显示不同客户端代码的星级平均值
SELECT avg(stars) from t1 group by clientcode;
答案 3 :(得分:0)
请尝试以下查询。
select avg(`stars`) AS `avgstar` ,`clientcode` from `t1` group by `clientcode` order by `avgstar` DESC
此处group by clientcode
将为每个不同的clientcode
和order by avgstar
获取记录,其中avgstar is average of stars field value for each clientcode
位于剔除顺序中。
感谢