SQL查找多行的最大值
数据集SQL查找多行的最大值,sql,Sql,数据集 名称编号值 阿拉巴马254100 图集156 200 阿拉巴马州354300 阿特拉斯800 400 SQL语句,以返回每个名称的最大数目 预期结果 阿拉巴马州354300 阿特拉斯800 400 您可以在PostgreSQL中使用distinct on: select distinct on (name) * from table t order by name, number desc; 您可以使用行编号()进行常规操作: select t.* from (select t.*,
名称编号值
阿拉巴马254100
图集156 200
阿拉巴马州354300
阿特拉斯800 400
SQL语句,以返回每个名称的最大数目
预期结果
阿拉巴马州354300
阿特拉斯800 400
您可以在
PostgreSQL
中使用distinct on
:
select distinct on (name) *
from table t
order by name, number desc;
您可以使用行编号()
进行常规操作:
select t.*
from (select t.*, row_number() over (partition by name order by number desc) as seq
from table t
) t
where seq = 1;
如果数字有关联,则可以使用
rank()
在使用SQL Server
和MySQL
的情况下,您可以将MAX()
函数与group by一起使用。试试看:
SELECT Name,MAX(Number),MAX(Value)
FROM myTable
GROUP BY Name
您可以使用just max函数查找最大值
喜欢
您可以先按编号订购,然后按名称分组,如下所示:
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);
在大多数数据库中,它具有最佳或接近最佳的性能,索引位于
(名称、编号)
MySQL、SQL Server或PostgreSQL?我已经删除了多个RDNMS标签,请随意添加相关的标签。如果您有(阿拉巴马州,400,10)
?那么预期的输出是什么?返回每个名称的最大数量。如果是这样,为什么在所需的输出中显示Value
列?添加行(Atlas,500,500)并调整预期结果-如果需要。Max Number并返回所有列以供参考,请参阅我不能使用Max(Value),因为Value字段不一定是我要选择的Max。MAX必须是唯一的数字。但是如果你真的想要值,那么你必须想要所有值中的任何一个,因为正如你所说的,如果你只想要阿拉巴马州的一张记录,那么阿拉巴马州不可能有多个值,对吗?
select t.*
from t
where t.number = (select max(t2.number) from t t2 where t2.name = t.name);