在 SQL 中提取每个组的最大值
常见的 SQL 任务涉及检索表中每个唯一组的最大值。 让我们用一个示例表来说明这一点:
Name | Value | AnotherColumn |
---|---|---|
Pump 1 | 8000.0 | Something1 |
Pump 1 | 10000.0 | Something2 |
Pump 1 | 10000.0 | Something3 |
Pump 2 | 3043 | Something4 |
Pump 2 | 4594 | Something5 |
Pump 2 | 6165 | Something6 |
我们的目标是为每个Value
(泵)找到最高的Name
,产生以下结果:
Name | Value |
---|---|
Pump 1 | 10000.0 |
Pump 2 | 6165 |
当多行共享相同的最大值时,使用子查询查找每个名称的最大值的简单方法通常会导致重复条目:
<code class="language-sql">select a.name, value from out_pumptable as a, (select name, max(value) as value from out_pumptable group by name) g where a.name = g.name and g.value = a.value</code>
但是,更高效、简洁的解决方案使用 GROUP BY
子句:
<code class="language-sql">select name, max(value) from out_pumptable group by name;</code>
此查询根据 Name
列对行进行分组,然后选择每个组中的最大值 Value
,有效避免重复结果并提供所需的输出。
以上是如何高效地选择SQL数据库中每组的最大值?的详细内容。更多信息请关注PHP中文网其他相关文章!