所以我被要求查找查询:查找前20位用户在用户评论中获得的平均星级(最有经验的)。将其与最低20位用户(最不受欢迎的)
授予的平均星级进行比较架构是:
餐厅(姓名)
等级(如何按行程顾问排名,不知道他们的排名功能是什么!,它不仅仅是SCORE)
得分(评审员授予的平均星级)
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
我认为我的逻辑必须以我的方式解决,但是如果有人可以解决它会有所帮助
答案 0 :(得分:1)
您缺少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;