因此,我被要求找到一个查询:在用户评论中找到由前20名用户(最有经验的用户)授予的平均明星。将其与排名前20位用户的平均明星奖进行比较(经验最少)
方案是:
餐厅(名称)
排名(它是如何被Trip排名的,它不知道他们的排名功能是什么!,这不仅仅是得分)
评分(评论员颁发的平均明星)
User_Name -审阅者/别名的名称
Review_Stars -这个评论员给了多少颗星星?
Review_Date -审查日期
User_Reviews -评审者给出的评论总数回顾了他/她对酒店/餐厅等的回顾历史
User_Restaurant_Reviews -相同,但只适用于餐馆
User_Helpful -有多少用户评论被其他审阅者标记为有帮助?
因此,我的逻辑是选择不同的user_names,以及他们的评论,通过评论将其限制为20。当我添加AVG(REVIEW_STARS)
时,它完全改变了答案。
SELECT DISTINCT USER_NAME, USER_REVIEWS
FROM TRIPADVISOR
ORDER BY USER_REVIEWS desc
limit 20;
返回:
Dorian C 1329
Scipion-Paris 1219
Waddler 1213
CJTravelerTexas 937
runner-oh... 828
maurowave 818
gabrielct... 720
AJCG 667
pietro r 652
Albia-Newton 651
Jilllian 650
laserkid 648
pstiva 616
lucaheat 585
Chokk 511
Soracte 491
viaggiatr... 487
tornado9 479
Magorzata B 478
Marcello... 464
当我将查询更改为:
SELECT DISTINCT USER_NAME, USER_REVIEWS, AVG(REVIEW_STARS)
FROM TRIPADVISOR
ORDER BY USER_REVIEWS desc
limit 20;
返回:Iain U 60 4.3333
我想我的逻辑在我所做的事情上一定是错的,但是如果有人能弄清楚,这会有帮助的。
发布于 2016-10-02 22:02:28
您缺少一个GROUP BY
语句,您可能想要删除DISTINCT
。你需要这样的东西:
SELECT USER_NAME, USER_REVIEWS, AVG(REVIEW_STARS)
FROM TRIPADVISOR
GROUP BY USER_NAME, USER_REVIEWS
ORDER BY USER_REVIEWS desc
limit 20;
https://stackoverflow.com/questions/39822080
复制相似问题