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


SQL calculating average for rating with different types

我有一个线程,不同的用户将一部电影分为三种不同的类型。

假设我有线程22,不同类型=movie.quality, movie.story and 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

作为查询的结果,我想得到平均的pro-id和类型,类似

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`

您可以通过thread_id进行分组,键入并可以获取值为的AVG

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

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