Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql显示所有行的计算平均值_Php_Mysql_Math_Average_Rating - Fatal编程技术网

Php mysql显示所有行的计算平均值

Php mysql显示所有行的计算平均值,php,mysql,math,average,rating,Php,Mysql,Math,Average,Rating,表结构 rating.post_id rating.user_id rating.rate_like rating.rate_dislike 样本数据: rating.post_id = 1 rating.user_id = 1 rating.rate_like = 1 rating.rate_dislike = 0 rating.post_id = 1 rating.user_id = 2 rating.rate_like = 1 rating.rate_dislike = 0 rati

表结构

rating.post_id
rating.user_id
rating.rate_like
rating.rate_dislike
样本数据:

rating.post_id = 1
rating.user_id = 1
rating.rate_like = 1
rating.rate_dislike = 0

rating.post_id = 1
rating.user_id = 2
rating.rate_like = 1
rating.rate_dislike = 0

rating.post_id = 1
rating.user_id = 3
rating.rate_like = 0
rating.rate_dislike = 1
鉴于上述结构,Post1由用户1、2和3进行评级,其中用户1和2投票赞成,而用户3投票反对

有了这些,如何得到平均评级是五星级的评级

公式: 总票数/总票数*100*0.5/10=四舍五入至最接近的0.5

例如: 2/3*100*0.5/10=3.33四舍五入至3.5

利率将是5颗星中的3.5颗星

预期mysql输出为:

post_id = 1
rate_like = 2
rate_dislike = 1
total_rating = 3.5
下面是我用sql所做的,但我不知道如何将它变成一条sql语句

这将得到平均值:

从按post\u id的评级组中选择RoundSumrate\u like/sumrate\u like+sumrate\u loke*100*0.5/10*2/2,1

其中应合并到此语句中:

按post_id从评级组中选择post_id、sumrate_like、sumrate_loke、sumrate_like+sumrate_loke

合并这两条语句会导致子查询返回超过1行的错误:

选择post_id、sumrate_like、sumrate_loke、sumrate_like+sumrate_loke,然后选择roundroundsumrate_like/sumrate_like+sumrate_loke*100*0.5/10*2/2,从每个post_id的评级组中选择1


在两个select语句中添加where子句可以解决此问题,但需要显示多行。

无需考虑。。。我们能够弄明白这一点。子查询用作联接表而不是列

挑选 评级。邮政编码, 你喜欢什么, 你不喜欢什么, 喜欢还是不喜欢, 列_评级 从评级 内连接 选择 邮政编码, roundroundsumrate_like/sumrate_like+sumrate_loke*100*0.5/10*2/2,1作为列级 来自按post_id划分的评级组 as评分表 on rating.post\u id=rating\u table.post\u id
按评级分组。post_id

无需担心。。。我们能够弄明白这一点。子查询用作联接表而不是列

挑选 评级。邮政编码, 你喜欢什么, 你不喜欢什么, 喜欢还是不喜欢, 列_评级 从评级 内连接 选择 邮政编码, roundroundsumrate_like/sumrate_like+sumrate_loke*100*0.5/10*2/2,1作为列级 来自按post_id划分的评级组 as评分表 on rating.post\u id=rating\u table.post\u id
按评级分组。post_id

我很困惑,你问一个问题,然后提供一个公式来回答你的问题。你想得到什么帮助?这里没有人会为您编写代码。只需要sql语句。您已经尝试了什么?你能发布你正在处理的失败的SQL语句吗?抱歉,我应该把它包括在我的问题中。。我已经更新了我的问题并包含了sql语句。我很困惑,你问了一个问题,然后提供了一个公式来回答你的问题。你想得到什么帮助?这里没有人会为您编写代码。只需要sql语句。您已经尝试了什么?你能发布你正在处理的失败的SQL语句吗?抱歉,我应该把它包括在我的问题中。。我已经更新了我的问题并包含了sql语句。