Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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
MySQL/PHP具有特定参数的平均列值_Php_Mysql_Sql_Average - Fatal编程技术网

MySQL/PHP具有特定参数的平均列值

MySQL/PHP具有特定参数的平均列值,php,mysql,sql,average,Php,Mysql,Sql,Average,我有一个令人惊讶的基本问题;我认为关于平均列,答案会更直接。以下是我的表格,其中包含示例值: 表:评级 标识、等级、项目标识 样本数据 1, 5, 3 2, 1, 2 3, 2, 3 4, 4, 4 5, 1, 2 如果我想获得标有3的项目的平均评分,该怎么办 真正的答案是2.5,因为有一个带a1的3,还有一个带5 以下是我认为的问题: SELECT avg(rating) as average FROM ratings; 如何仅指定项目id为3的评分?我在哪里使用?分组?还有别的吗 问题

我有一个令人惊讶的基本问题;我认为关于平均列,答案会更直接。以下是我的表格,其中包含示例值:

表:评级

标识、等级、项目标识 样本数据

1, 5, 3 2, 1, 2 3, 2, 3 4, 4, 4 5, 1, 2 如果我想获得标有3的项目的平均评分,该怎么办

真正的答案是2.5,因为有一个带a1的3,还有一个带5

以下是我认为的问题:

 SELECT avg(rating) as average FROM ratings;
如何仅指定项目id为3的评分?我在哪里使用?分组?还有别的吗


问题的第二部分:如何将其输出到单个变量中?

您只需指定WHERE子句:

选择AVGrating作为平均值 从收视率 其中,item_id=3 -返回1行 如果您想获得按项目id分组的整个数据的平均值,可以使用分组依据:

选择项目_id,AVGrating作为平均值 从收视率 按项目\u id分组 -返回与不同项目标识数相同的行数
您只需指定WHERE子句:

选择AVGrating作为平均值 从收视率 其中,item_id=3 -返回1行 如果您想获得按项目id分组的整个数据的平均值,可以使用分组依据:

选择项目_id,AVGrating作为平均值 从收视率 按项目\u id分组 -返回与不同项目标识数相同的行数
嗯。。。你试过了吗

SELECT AVG(rating) FROM ratings WHERE item_id = 3;
如果您的评级为整数类型,则您可能希望改为:

SELECT AVG( CAST(rating AS FLOAT) ) FROM ratings WHERE item_id = 3;
如果要将结果保存在变量中:

SELECT AVG( CAST(rating AS FLOAT) ) INTO @var FROM ratings WHERE item_id = 3;
SELECT @var;

嗯。。。你试过了吗

SELECT AVG(rating) FROM ratings WHERE item_id = 3;
如果您的评级为整数类型,则您可能希望改为:

SELECT AVG( CAST(rating AS FLOAT) ) FROM ratings WHERE item_id = 3;
如果要将结果保存在变量中:

SELECT AVG( CAST(rating AS FLOAT) ) INTO @var FROM ratings WHERE item_id = 3;
SELECT @var;

您可能想检查我在大多数项目中使用的算法。它不需要任何复杂的MySQL语句和函数,同时平均评级值的检索和更新只影响一行,即使您处理的是数百万个评级。一切都基于纯数学:


请查看,希望它会有用:

您可能想查看我在大多数项目中使用的算法。它不需要任何复杂的MySQL语句和函数,同时平均评级值的检索和更新只影响一行,即使您处理的是数百万个评级。一切都基于纯数学:


请查看,希望它会有用:

太好了,谢谢。问题的第二部分,如何将其输出到变量中?您不必使用fetch_数组循环它,我不相信?是的,您需要执行SQL并获取第一个结果。例如,如果在第二个查询中需要不止一行,那么您需要迭代剩余的结果。是的,但从技术上讲,我不会获取一行,所以我不能使用mysql\u fetch\u row-对吗?这只是一列中所有行的平均值。单数。所以也没有数组抓取,或者我已经开始了吗$row=mysql\u fetch\u array$result;echo$行[0];把你的答案标记为正确。那太好了,谢谢。问题的第二部分,如何将其输出到变量中?您不必使用fetch_数组循环它,我不相信?是的,您需要执行SQL并获取第一个结果。例如,如果在第二个查询中需要不止一行,那么您需要迭代剩余的结果。是的,但从技术上讲,我不会获取一行,所以我不能使用mysql\u fetch\u row-对吗?这只是一列中所有行的平均值。单数。所以也没有数组抓取,或者我已经开始了吗$row=mysql\u fetch\u array$result;echo$行[0];把你的答案标对了。