首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL select:汇总用户设置的所有评级。在一个表中设置多个设置(包括SQL FIDDLE )

SQL select:汇总用户设置的所有评级。在一个表中设置多个设置(包括SQL FIDDLE )
EN

Stack Overflow用户
提问于 2017-10-11 00:56:43
回答 3查看 41关注 0票数 0

我正在尝试运行sql select,但每次尝试时,我都意识到我绝对不适合这样做。

我的设置如下。

我有两张桌子。一个用于游戏玩家,例如存储名字的地方,还有一个用户(用户表不重要)可以投票支持游戏玩家的设置(设置表也不重要)。

因此,在评级表中存储了哪个用户投票支持哪个游戏设置(都有ID),用户给了多少分,以及他对哪个设置进行了评分,因为玩家可以有多个设置。

我已经为你创建了一个SQL Fiddle,HERE

现在我正在尝试获取所有设置的列表(注意不同的设置),按评级排序(这里很重要,SUM()除以投票支持此设置的用户数量) DESC

我尝试过这样的方法,但当然不起作用。SELECT sum(gsr.gsr_rating),gsr.gsr_setup_id FROM gamer_id加入gamer as g ON g.gamer_id=gsr.gsr_rated_id WHERE gsr_rated_id = (SELECT Gamer_id FROM gamer)

我和我的朋友都输得一塌糊涂,也许你们更有本事。

谢谢你抽出时间,我很感激。

EN

回答 3

Stack Overflow用户

发布于 2017-10-11 01:00:36

在yoru SQLFIDDLE中,你有一个来自subselect的错误,如果你需要更多的匹配行,你可以使用In子句(或连接)

代码语言:javascript
复制
SELECT sum(gsr.gsr_rating)
 , gsr.gsr_setup_id 
 FROM gamersetupratings gsr 
 JOIN gamer as g ON g.gamer_id=gsr.gsr_rated_id 
 WHERE gsr_rated_id in (SELECT gamer_id FROM gamer)

否则,如果需要单行用于subselect,则可以使用limit 1

代码语言:javascript
复制
SELECT sum(gsr.gsr_rating)
   , gsr.gsr_setup_id 
   FROM gamersetupratings gsr 
   JOIN gamer as g ON g.gamer_id=gsr.gsr_rated_id 
   WHERE gsr_rated_id = (SELECT gamer_id FROM gamer order by gamer_id limit 1)

但是您不需要subselect,您已经在join on condition中指定了所需的值

代码语言:javascript
复制
SELECT sum(gsr.gsr_rating)
 , gsr.gsr_setup_id 
 FROM gamersetupratings gsr 
 JOIN gamer as g ON g.gamer_id=gsr.gsr_rated_id 
票数 0
EN

Stack Overflow用户

发布于 2017-10-11 01:19:14

这应该会给你不同的游戏is以及每个游戏的平均评分是多少。除非我误解了,否则我认为您应该只查找每个gsr_setup_id的平均值。

代码语言:javascript
复制
SELECT COUNT(gsr_setup_id) as timesVotedFor,
AVG(gsr_rating) as rating,
GSR_SETUP_ID as setupID
FROM gamersetupratings
GROUP BY gsr_setup_id
ORDER BY rating desc;
票数 0
EN

Stack Overflow用户

发布于 2017-10-11 02:22:34

您将通过下面的查询获得所需的结果。

代码语言:javascript
复制
SELECT sum(gsr.gsr_rating) as gsr_rating, gsr.gsr_setup_id, 
     sum(gsr.gsr_rating) /count(gsr.gsr_rated_id) as sorting_value
    FROM 
    gamersetupratings gsr 
    JOIN gamer as g 
    ON g.gamer_id=gsr.gsr_rated_id 
    Group by gsr.gsr_setup_id
    Order by sorting_value desc

如果您愿意,可以将sum(gsr.gsr_rating)/count(gsr.gsr_rated_id)值直接放在order by子句中,但为了更好地理解问题,我只是这样放入

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46672056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档