【问题标题】:Group records by UserID, select where on one column value and sum another按 UserID 对记录进行分组,选择一个列值的位置并对另一个值求和
【发布时间】:2017-11-03 17:43:50
【问题描述】:

在 MySQLWorkbench 中使用 SQL 我想按“用户 ID”对记录进行分组, 仅选择与“周”在(5,6,7,8)中匹配的记录,并对“分数”中每个用户的值求和。

记录实际上存储在我要加入的两个表中,一个阵容表和阵容历史表:

INNER JOIN vi_lineup on vi_lineup.lineup_master_id = vi_lineup_master.lineup_master_id

显然,我是新手。我确实搜索了 S.O.首先但没有找到匹配的问题。我会继续寻找,希望有人在这里回答。感谢您的帮助。

一条评论询问了周。该游戏基于每周模型,我们按顺序对其进行编号。这是一个连接表并根据周选择记录的工作查询:

select * FROM vi_lineup LU 
INNER JOIN vi_lineup_master LM 
WHERE (LU.week > 4 and LU.week < 9)  
AND LU.lineup_master_id = LM.lineup_master_id 
Limit 0,148000;

我现在想做的是按 LM.UserID 对记录进行分组,并对 LU.Score 中的值求和 谢谢!

【问题讨论】:

  • 请更新您的问题,添加表格架构、适当的数据样本和预期结果
  • “匹配 'Weeks' 介于 5 到 8 之间”非常难以理解。您的数据和预期结果的示例将非常有帮助。在 SO 上查看this site for producing a nicely formatted table (从 excel 中复制并粘贴表格到该站点,并在每行添加 4 个前导空格或制表符将在 SO 上很好地格式化)。
  • 感谢收看。我将尝试添加请求的编辑。这是在工作的周字段上选择的查询。 select * FROM vi_lineup LU INNER JOIN vi_lineup_master LM WHERE (LU.week > 4 and LU.week

标签: mysql sql mysql-workbench


【解决方案1】:

您尚未告诉我们用户 ID 或分数的来源。但是假设你自己可以澄清,查询的“基本”结构将是这样的:

SELECT
      ??.UserID, SUM(??.score) AS sum_score
FROM vi_lineup lu
INNER JOIN vi_lineup_master lm ON lu.lineup_master_id = lm.lineup_master_id
WHERE lu.week between 5 and 8
GROUP BY
      ??.UserID

您需要将每个 ?? 替换为正确的表别名“lu”或“lm”

【讨论】:

  • 非常感谢。我今天联系了数据库开发人员,他解释说我查询的字段在不同的模式中,但是 UserID 在 LM 中,Score 在 LU 中。
  • 您的问题现在解决了吗?你对这个答案还有疑问吗?要接受答案“Click the Tick”了解更多信息,请参阅help/accepting
猜你喜欢
  • 2020-08-21
  • 2021-07-25
  • 2014-10-20
  • 2018-07-19
  • 1970-01-01
  • 2021-06-12
  • 2021-11-01
  • 2017-04-01
  • 1970-01-01
相关资源
最近更新 更多