【问题标题】:MYSQL - how to average returned votes from inner joined table resultsMYSQL - 如何从内部连接表结果中平均返回投票
【发布时间】:2013-07-04 21:19:39
【问题描述】:

我是初学者,请多多包涵。

我试图从一个表中获取 ID 号以指向另一个表中的相同数字,该表包含一个名称值(即 rating.id 1 = names.id 1 和 names.name “面包”),我似乎已经做到了。然后我想在名称旁边显示平均评分,即取所有 rating.rate 值(范围从 1-5)并平均评分,并将其显示在产品旁边,然后订购 desc。如:

name-------average rating

Coffee-----4.3

Bread------3.2

Cheese-----2.9

etc

到目前为止,它给了我所有的产品名称,但显示产品名称的次数与它的评级一样多,然后排名 desc。没多大用处。这就是我所拥有的:

SELECT rating.rate, names.name FROM rating INNER JOIN names ON rating.id = names.id ORDER BY rating.rate DESC LIMIT 0, 25 GROUP BY names.name

感谢您的帮助!

【问题讨论】:

    标签: mysql inner-join average


    【解决方案1】:

    您的示例似乎根本没有使用 AVG 功能?下面的呢?

    SELECT AVG(rating.rate) as avg_rating, names.name 
      FROM rating 
      JOIN names 
        ON rating.id = names.id
    GROUP BY names.name
    ORDER BY avg_rating DESC
    LIMIT 0, 25    
    

    由于 GROUP BY,这将平均每个名称的评分。将 AVG 的结果放入 avg_rating 并在 ORDER BY 中使用。

    【讨论】:

    • 这很快就奏效了,非常感谢!我曾尝试使用 AVG,但我没有发布我的尝试,因为这显然不是如何做到的,也不想与我对此事的愚蠢想法相混淆。
    猜你喜欢
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 2021-10-28
    • 2012-09-26
    相关资源
    最近更新 更多