0

クライアントの星評価が保存されているmysqlテーブルがあるので、次のようにします。

参照、クライアントコード、日付、コメント、星

同じ clientcode が何度も表示される場合があります。

星の平均数が最も多い個別のクライアントコードを選択する必要があります。これを取得する方法についての提案

4

4 に答える 4

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
于 2012-10-31T11:28:27.623 に答える
0

以下のクエリを試してください。

select avg(`stars`) AS `avgstar` ,`clientcode`  from `t1` group by `clientcode` order by `avgstar` DESC

ここで は、降順ですべての個別の場所group by clientcodeのレコードを取得します。clientcodeorder by avgstaravgstar is average of stars field value for each clientcode

ありがとう

于 2012-10-31T11:58:16.120 に答える
0
SELECT 
    t1.* 
FROM 
    table t1 
WHERE 
    t1.stars IN 
    (
        SELECT 
            MAX(t2.stars) 
        FROM 
            table t2 
        WHERE  
            t2.clientcode = t1.clientcode
    )
于 2012-10-31T11:20:15.917 に答える
0

これは、個別のクライアントコードの星の平均値を示します

SELECT avg(stars) from t1 group by clientcode;
于 2012-10-31T11:28:01.217 に答える