MYSQL - 查询单个查询中多个用户的评级平均值

时间:2013-06-18 01:26:13

标签: mysql

我正在建立一个网站,其中一个方面涉及教师和评级教师。评分由学生进行,当学生正在寻找教师时,我希望他们能够通过包括他们的平均评分来筛选教师。

每位教师的每个学生的每个评分都会将他们评价教师的明星数量放入数据库中。我已经有了一个可以计算每位老师平均星级的查询

    SELECT AVG(star) AS Average FROM rating_table WHERE  type = 'Member_review' 
    AND teacher_id = id_number

id_number显然是教师的user_id。

当人们在所有教师的搜索页面上时,我希望他们能够通过评级和其他标准过滤教师。我可以将这个查询放在一个foreach循环中并让它运行每个教师ID,但我怀疑这对服务器来说是一个巨大的拖累 - 有没有办法让我把一串逗号分隔的id放入查询并找到每个人的平均评分?我确实尝试过这个查询但是没有用

    SELECT AVG(star) AS Average FROM rating_table WHERE  type = 'Member_review' 
    AND teacher_id IN(1,2,3, etc...) 

有没有办法让我可以获取查询以获取每个教师user_id的平均值并让它出现这样的东西?

    Average     Teacher ID
    3.5         6
    4.6         2

1 个答案:

答案 0 :(得分:2)

是。这是一个基本的聚合查询:

SELECT AVG(star) AS Average, teacher_id
FROM rating_table
WHERE type = 'Member_review' and
      teacher_id IN(1,2,3, etc...) 
group by teacher_id