sql - 如何选择 group by 未使用的列?
问题描述
id | gender | max
---+--------+--------
1 | F | 5972
1 | M | 2428
2 | F | 1954
3 | M | 2093
3 | F | 2118
我已将 2 个表合并到上面的表中。我想从同一个id中找到最高分
输出表应该是这样的:
id | gender | max
---+--------+--------
1 | F | 5972
2 | F | 1954
3 | F | 2118
如果我不需要打印性别,这很容易,因为我可以使用最大评论和 group by 子句。
select id, max(max)
group by id
order by id;
上面的行数相同,但问题是我无法打印性别。
解决方案
这应该很顺利:
select b.id, b.gender,b.max from (
select dense_rank() over(partition by id order by max desc) as rk,id, gender, max
from table
)
where b.rk = 1
-- 添加:如果您不希望在最大平局的情况下出现多个性别记录,我们可以在 RANK FUNCTION 中按顺序添加“性别”之类的条件。
推荐阅读
- go - 如何在 launch.json 文件中添加 -race 参数?
- javascript - 尝试调用 js 函数时,链接元素的 onClick 不起作用(未捕获的 TypeError:无法设置属性 'onclick' of null)
- python - 无法将从 DICOM 文件中提取的详细信息写入 csv 文件
- solidity - 为什么solidity编译器会在import语句上抛出解析错误?解决方法是什么?
- ibm-cloud - IBM Voice Agent 的 SIP IP 地址是静态的吗?
- java - 如何按特殊字符拆分字符串,但不删除它们?
- php - 如何在不保存文件的情况下检查错误?
- php - 使用记住我后密码字段不会重置/清除,即使我们没有点击记住我,它也会保留在那里
- javascript - 使用正则表达式验证输入或嵌入提交时验证字段
- javascript - 如何使用 docx4js 读取 Word 文档的页眉或页脚?