[英]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 Server
和MySQL
情况下,您可以将MAX()
函数与 group by 一起使用。 尝试像:
SELECT Name,MAX(Number),MAX(Value)
FROM myTable
GROUP BY Name
您可以仅使用 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.