如何在单个查询中获得每个帖子的平均评分为5

问题描述

我有一个表,存储了他们的客户给帖子的反馈评论和评分。我只想知道如何查询每个帖子的平均评分除以5的百分比。

因此公式将如下所示。例如:

 (rate1 * customer) + (rate2 * customer)
----------------------------------------- * 100 / 5 = AVERAGE percentage within 5 stars rating
       total customer(per post)

所以我现在的查询是这样的:

SELECT 
    service_providers_post,rating,count(customer) as 'perrate_customers',t.perpost_customers
FROM serviceproviders_feedback
JOIN (SELECT 
        service_providers_post as 'postid',COUNT(customer) as 'perpost_customers'
    FROM serviceproviders_feedback
    GROUP BY service_providers_post) t
on t.postid = serviceproviders_feedback.service_providers_post
GROUP BY service_providers_post,rating

以上查询的输出如下:

View query per rating

我想要的输出是显示每个帖子在1-5之间的每个评分的平均评分。

那么如何获取查询中每个帖子的平均值?

这里有一个链接作为我的桌子的例子

SqlFiddle

解决方法

我不确定您是否只希望获得平均评分:

SELECT 
    postid,avg(rating)
FROM ratings r
GROUP BY r.postid;

或具有全球平均值的新列:

SELECT 
    postid,rating,count(customer) as 'perrate_customers',t.perpost_customers,t.perpost_rating_avg
FROM ratings r
JOIN (SELECT 
        postid as 'post_id',avg(rating) as 'perpost_rating_avg',COUNT(customer) as 'perpost_customers'
    FROM ratings
    GROUP BY postid) t
on t.post_id = r.postid
GROUP BY r.postid,r.rating

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...