Mysql - 选择具有最高平均值的不同客户端代码

时间:2012-10-31 11:15:24

标签: php mysql

我有一个mysql表,其中存储了客户的星级评定,所以:

REF,clientcode,日期,评论,星

相同的客户端代码可以多次出现。

我需要选择平均星数最多的不同客户端代码。任何建议如何得到这个

4 个答案:

答案 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将为每个不同的clientcodeorder by avgstar获取记录,其中avgstar is average of stars field value for each clientcode位于剔除顺序中。

感谢