2016-04-26 36 views
0

我写了下面的代码来计算平均得分为商业,现在我想在业务类别的TOP 2的业务,我尝试添加HAVING COUNT(*) <= 2,但它不工作...如何获得oracle sql中每个类别的前N个业务?

SELECT r.Bussiness_ID, b.Bussiness_Name, c.Catg_name, AVG(r.Rating) 
FROM review r,bussiness b, busn_catg c 
WHERE b.Bussiness_ID = r.Bussiness_ID 
AND b.Category = c.Catg_ID 
GROUP BY r.Bussiness_ID,b.Bussiness_Name, c.Catg_name 
ORDER BY c.Catg_name, AVG(r.Rating); 

回答

0
SELECT r.Bussiness_ID, b.Bussiness_Name, c.Catg_name, AVG(r.Rating) rt FROM review r,bussiness b, busn_catg c WHERE b.Bussiness_ID = r.Bussiness_ID AND b.Category = c.Catg_ID GROUP BY r.Bussiness_ID,b.Bussiness_Name, c.Catg_name ORDER BY c.Catg_name, rt desc;