表公寓>
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`
如果公寓只有一个评级,则上述查询正常工作..如果公寓有多个评级值,请提供帮助
答案 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')