无法查找查询以显示评级大于给定值的名称

时间:2016-11-03 08:19:39

标签: mysql

表公寓>

apartment_id || apartment_name || status
==============================
 1                         joys                active
 5                         harrys              active  
 10                        tols                active 

表评级>

user_id || apartment_id || rating
===================================
  1              1                  4
  2              5                  3
  3              10                 4
  4              10                 5  

我需要获得评级大于某个值的公寓名称(例如' x')..如果同一个公寓的评分超过1个来自不同的用户(例如在apartment_id = 10)如果平均值大于' x'

,则应退回公寓
SELECT a.*  FROM  `apartment` AS a     LEFT JOIN `ratings` AS b ON a.`apartment_id` = b.`apartment_id` WHERE  a.`status` NOT IN ('inactive')  AND (b.apartment_id IN (SELECT apartment_id FROM `ratings` WHERE `rating` > x)) GROUP BY a.`apartment_id` 

如果公寓只有一个评级,则上述查询正常工作..如果公寓有多个评级值,请提供帮助

1 个答案:

答案 0 :(得分:0)

SELECT a.apartment_name,
       t.avg_rating
FROM apartment a
LEFT JOIN(SELECT s.apartment_id , AVG(s.rating) as avg_rating
     FROM ratings s
     GROUP BY s.apartment_id
     HAVING AVG(s.rating) > <X..> ) t
 ON(t.apartment_id = a.apartment_id)
WHERE a.status NOT IN ('inactive') 
相关问题