繁体   English   中英

SQL查找多行的MAX值

[英]SQL Find MAX Values for multiple rows

数据集

Name    Number  Value
Alabama  254    100
Atlas    156    200
Alabama  354    300
Atlas    800    400

返回每个名称的最大数量的 SQL 语句。

期望的结果

Alabama  354    300
Atlas    800    400

您可以在PostgreSQL使用distinct on

select distinct on (name) *
from table t
order by name, number desc;

您可以使用row_number()到一般:

select t.*
from (select t.*, row_number() over (partition by name order by number desc) as seq
      from table t
     ) t
where seq = 1;

如果 number 有关系,那么您可以使用rank()代替。

SQL ServerMySQL情况下,您可以将MAX()函数与 group by 一起使用。 尝试像:

SELECT Name,MAX(Number),MAX(Value) 
FROM myTable 
GROUP BY Name

SQL小提琴

您可以仅使用 max 函数来查找最大值
喜欢。

SELECT Name,MAX(Number),MAX(Value) 
FROM myTable 
GROUP BY Name

您可以先按编号排序,然后按名称进行分组,如下所示:

SELECT DISTINCT 
name, MAX(number) AS number, MAX(value) AS value
FROM table
GROUP BY name

返回每个名称的最大数量的 SQL 语句。

你描述的听起来像:

select t.*
from t
where t.number = (select max(t2.number) from t t2 where t2.name = t.name);

在大多数数据库中,这具有最佳或接近最佳的性能,索引位于(name, number)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM