当前位置: 首页 > 面试题库 >

MySQL将选择与其他表的总和相结合

阴迪
2023-03-14
问题内容

我不太喜欢MySQL,但是我只需要声明一下,非常感谢您的帮助。

我有两个表:“用户”和“得分”

这是“用户”的结构:

| user_id | user_name |
| 1       | Paul      |
| 2       | Peter     |

这是“得分”的结构:

| score_id | score_user_id | score_track_id | score_points | 
| 1        | 2             | 23             | 200          |
| 2        | 2             | 25             | 150          |

现在,我需要一个查询,该查询为我提供了某种高分列表。结果应包含user_id,user_name和与该用户相关的所有分数之和:我应该看起来像这样:

| user_id | user_name | scores |
| 1       | Paul      | 0      |
| 2       | Peter     | 350    |

更好的是,如果结果按照用户在全球排名中的排名顺序进行排序,如下所示:

| position | user_id | user_name | scores |
| 1        | 2       | Peter     | 350    |
| 2        | 1       | Paul      | 0      |

我尝试了这个说法

SELECT user_id as current_user, user_name, SUM(SELECT score_points FROM score WHERE score_user_id = current_user) as ranking FROM user ORDER BY ranking DESC

这会导致语法错误。我的主要问题是将每行的user_id从“ user”连接到“ score”中的score_user_id。

非常感谢您的帮助


问题答案:

您只需要按用户将分数分组:

SELECT @p:=@p+1 AS position, t.*
FROM (
  SELECT   user.user_id,
           user.user_name,
           IFNULL(SUM(score.score_points),0) AS total_points
  FROM     user LEFT JOIN score ON user.user_id = score.score_user_id
  GROUP BY user.user_id
  ORDER BY total_points DESC
) AS t JOIN (SELECT @p:=0) AS initialisation

在sqlfiddle上看到它。



 类似资料:
  • 问题内容: 我有一张桌子,上面满是物品和所说物品的价格。我想获取3个最高价商品的总和。 我想也许可以,但这似乎并不能解决问题。这可能吗?谢谢! 问题答案:

  • 我有四张桌子A、B、C和D。 我需要选择值2(我从表D中猜测),其中值1和值3在表D中的同一行中,并且在表A和表C的行中都有相同的“城市”。 所以,如果表A有一行 表C有行 表D有行 然后我需要打印:

  • 我正在尝试使用“psycopg2”从postgres获取JSON行。记录的值类似于[[{….},{...},{...}] ]. 要获得正确的JSON结果,请执行以下操作:[{…},{...},{...}] 我得去录音。不知道为什么会这样。

  • 问题内容: 我有2列,像这样: 我想对金额求和,以获得结果 到目前为止,我已经尝试过(但失败了)的是: 问题答案: 删除中的单引号。它使列名转换为字符串。

  • 你会觉得将 Git 作为其他版本控制系统的客户端,或者在数据无损的情况下将几乎任何一个现有的仓库导入到 Git,都是一件很惬意的事。 在下一章,我们将要讲解 Git 的原始内部数据,如果需要的话你就可以加工每一个字节。

  • 问题内容: 给定此选择器: 它将匹配一个正文,该正文的类包含 page-node-add- 的子字符串,而类恰好是 page-node-edit 我想说匹配第一个或第二个(但不能同时匹配)。可能吗? 使用逗号的问题: 如果我有一个长选择器,例如: 我原本以为CSS3可以解决这个问题,但是我想到的是: 谢谢 问题答案: 您需要使用逗号将它们分开: 使用逗号的问题: …是除了逗号以外,您无法做其他任何