sql - 选择每个组的最大值,包括其他列
问题描述
在提到的问题中,有一个解决方案可以取每组的最大值。我需要更多帮助我想要每个组的最大值和另一列(有问题的第三列)的最大值。表看起来像这样
Name Value AnotherColumn
Pump1 1000 1
Pump1 2000 2
Pump2 1000 2
Pump2 2000 1
输出应该是
Name Value AnotherColumn
Pump1 2000 2
Pump2 2000 1
我正在使用 Microsoft Sql Server 2012。另一列可以是任何类型,不限于整数,我只想获取另一列作为每个组的最大值。
解决方案
一种选择使用ROW_NUMBER
:
SELECT Name, Value, AnotherColumn
FROM
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Value DESC) rn
FROM yourTable
) t
WHERE rn = 1
请注意,如果您希望每个名称的所有关系都具有最大值,那么您可以ROW_NUMBER
用RANK
(或可能DENSE_RANK
)替换以获取所有关系。
推荐阅读
- ruby - 如何从数据文件循环显示内容?
- ios - iOS Core Graphic,如何计算 CGAffineTransform(scaleX offset?
- php - 计算数据表/数据库中某些输入的出现次数
- websitepanel - WebsitePanel 门户崩溃
- python-3.x - TypeError:+ 的不支持的操作数类型:数学中的“float”和“str”
- c++ - 使用 WindowSetup 类变量时出错
- javascript - 将带有格式/样式的 HTML 表格标记复制到剪贴板
- json - 如何使用计数器 +1 更改 json 文件中的特定行
- c - BPF_PROG_RUN 是否实现了备用 ebpf 解释器?
- python - 在添加/编辑 django admin 中为单个字段使用 select_related