首页 > 数据库 > mysql教程 > 如何在SQL中选择每个组内的最大值?

如何在SQL中选择每个组内的最大值?

Patricia Arquette
发布: 2024-12-29 18:24:11
原创
633 人浏览过

How to Select the Maximum Value within Each Group in SQL?

具有最大值选择的 SQL Group By

在 SQL 中,GROUP BY 子句允许我们根据指定的列对行进行分组。与 MAX 函数一起使用时,可用于选择每组中的最大值。

问题陈述

假设您有一个包含以下数据的表:

ID Name AlarmID AlarmUnit AlarmLevel
1 Test Voltage PSU Warning
2 Test Voltage PSU Ceased
3 Test Voltage PSU Warning
4 Test Temperature RCC Warning
5 Test Temperature RCC Ceased

您只想检索 AlarmID 和 AlarmUnit 定义的每个组的最新信息。预期输出应该是:

ID Name AlarmID AlarmUnit AlarmLevel
3 Test Voltage PSU Warning
5 Test Temperature RCC Ceased

解决方案

要解决这个问题,我们可以在 Oracle、SQL Server 2005 和 PostgreSQL 8.4 中使用以下查询:

SELECT  *
FROM    (
        SELECT  *, ROW_NUMBER() OVER (PARTITION BY alarmId, alarmUnit ORDER BY id DESC) AS rn
        FROM    TableName
        ) q
WHERE   rn = 1
登录后复制

对于 MySQL,查询是:

SELECT  mi.*
FROM    (
        SELECT  alarmId, alarmUnit, MAX(id) AS mid
        FROM    TableName
        GROUP BY
                alarmId, alarmUnit
        ) mo
JOIN    TableName mi
ON      mi.id = mo.mid
登录后复制

对于 PostgreSQL 8.3及以下版本,我们可以使用:

SELECT  DISTINCT ON (alarmId, alarmUnit) *
FROM    TableName
ORDER BY
        alarmId, alarmUnit, id DESC
登录后复制

以上是如何在SQL中选择每个组内的最大值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板