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

时间:2012-04-02 13:22:04

标签: php mysql sql

我有一个帖子,不同的用户评价了3种不同类型的电影。

说我有线程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

由于我的查询,我想获得平均专业人员和类型,如

array(thread_id=22 => array(
                      type=>movie.imdb =>  average=>8.2),
                      type=>movie.story => average=>8.8),
                      type=>movie.quality => average=>8.1))

我如何构建此查询?

2 个答案:

答案 0 :(得分:2)

通过分组:

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

答案 1 :(得分:1)

你可以按thread_id进行分组,输入并且可以获取价值AVG

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

现在从此查询的输出中,您可以根据代码中的thread_id进行选择以制作/形成数组..或者更准确地说是数组或数组..