Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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 SQL计算不同类型评级的平均值_Php_Mysql_Sql - Fatal编程技术网

Php SQL计算不同类型评级的平均值

Php SQL计算不同类型评级的平均值,php,mysql,sql,Php,Mysql,Sql,我有一个线程,不同的用户用3种不同的类型对一部电影进行评级 假设我有线程22,不同的类型=movie.quality、movie.story和movie.imdb 因此,评级表的结构如下所示: | ID | thread_id | user_id | type | value | 12 | 22 | 2 | 'movie.imdb' | 8.5 | 23 | 22 | 4 | 'movie.imdb' |

我有一个线程,不同的用户用3种不同的类型对一部电影进行评级

假设我有线程22,不同的类型=
movie.quality、movie.story和movie.imdb

因此,评级表的结构如下所示:

| ID | thread_id | user_id | type             | value
| 12 | 22        | 2       | 'movie.imdb'     | 8.5
| 23 | 22        | 4       | 'movie.imdb'     | 7.5
| 42 | 22        | 5       | 'movie.story'    | 8.5
| 56 | 22        | 6       | 'movie.quality'  | 8.5
| 76 | 22        | 6       | 'movie.imdb'     | 7.53
作为我查询的结果,我想得到平均的proid和type,比如

array(thread_id=22 => array(
                      type=>movie.imdb =>  average=>8.2),
                      type=>movie.story => average=>8.8),
                      type=>movie.quality => average=>8.1))
如何组织此查询?

按分组:

select `type`, avg(`value`)
from ratings
where `thread_id` = 22
group by `type`
按分组:

select `type`, avg(`value`)
from ratings
where `thread_id` = 22
group by `type`

您可以按线程id、类型进行分组,并可以获取值的平均值

select thread_id,type, avg (value)
from rating
group by thread_id,type

现在,从这个查询的输出中,您可以根据代码中的
线程id
选择生成/形成数组。。或者更准确地说是数组或数组

您可以按线程id、类型进行分组,并可以获取值的平均值

select thread_id,type, avg (value)
from rating
group by thread_id,type

现在,从这个查询的输出中,您可以根据代码中的
线程id
选择生成/形成数组。。或者更准确地说是数组或数组

根据您的答案,从thread=25的评级中选择类型、平均值(“值”),按“类型”分组;不起作用:(=将平均值显示为0,并仅显示一种类型,而不是所有类型。这是
`type`
,而不是
'type'
-即,使用反勾号,而不是单引号。这会产生很大的差异。根据您的答案,选择类型,将平均值(“值”)与按“类型”分组的线程=25的评级进行比较;不起作用:(=将平均值显示为0,并且仅显示一种类型,而不是所有类型。这是
`type`
,而不是
'type'
-即,使用反勾号,而不是单引号。这会产生很大的差异。从评级中选择thread,type,AVG(VALUE),COUNT(*),其中thread=25,按线程分组,type;工作方式类似charme,谢谢。选择thread,type,AVG(VALUE),COUNT(*)根据thread=25的评级,按线程分组,键入;就像charme一样工作,谢谢。