【问题标题】:MYSQL - Querying averages of ratings for multiple users in a single queryMYSQL - 在单个查询中查询多个用户的平均评分
【发布时间】:2013-06-18 01:26:12
【问题描述】:

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

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

    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

【问题讨论】:

    标签: mysql


    【解决方案1】:

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

    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
    

    【讨论】:

    • 太棒了。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多