mysql - 如何按用户 ID 对表进行分组并获取另一列的最大值?
问题描述
我有一个表(bitnami moodle 中的 scrom_scoes_track 表),其中包括用户 ID 和值列。表的结构如下。
我想找到每个用户的最大标记。可以使用以下查询找到用户的标记。
SELECT
`userid`,
`value`
FROM
`mdl_scorm_scoes_track`
WHERE
`element`= 'cmi.core.score.raw'
但是当我尝试使用以下查询获取最大值时,它不会按预期工作。
SELECT
`userid`,
MAX(`value`)
FROM
`mdl_scorm_scoes_track`
WHERE
`element`= 'cmi.core.score.raw'
GROUP BY
`userid`
这里第一行是用户 ID 2 和值 50。但用户 ID 2 的最大值应该是 100。(如第二张图所示)。对此问题的任何帮助都将受到高度赞赏。
解决方案
不要对数字字段使用长文本。或者在下面使用
SELECT `userid`,MAX(cast(`value` as unsigned)) FROM `mdl_scorm_scoes_track` WHERE `element`= 'cmi.core.score.raw' GROUP BY `userid`
推荐阅读
- mongodb-query - 有没有办法将 graphLookup 聚合管道阶段用于数组?
- python - Go API 微服务偶尔会返回字符串中的第一个字符或垃圾字符。是否存在可能导致此问题的已知错误?
- python - Sendgrid 从终端工作,但不在 pycharm 中
- php - 控制器不断生成带有错误外键名称的 SQL 查询
- c - 以某种方式处理像素的方法
- reporting-services - 为什么 RowNumber 没有按预期工作?(报表生成器 3.0)
- doctrine - Symfony 学说:映射:转换过滤器不起作用
- python - 如何根据参数名称从字典中获取 Keras 层函数的参数值?
- testing - 如何判断一个测试用例(TFS 工作项)是否已经过测试?
- python - 如何按条件检测每列值的增加和减少?