繁体   English   中英

MySQL-选择平均最高的独特客户端代码

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM