Mysql SQL:对于每个不同的C,使用最大值B获得A
在我的示例中,我有一个包含不同场馆信息的表,其中包含城市、场馆名称和容量列。我需要为每个城市中容量最高的场馆选择城市和场馆名称。因此,如果我有数据: city | venue | capacity LA | venue1 | 10000 LA | venue2 | 20000 NY | venue3 | 1000 NY | venue4 | 500 。。。查询应返回: LA | venue2 NY | venue3Mysql SQL:对于每个不同的C,使用最大值B获得A,mysql,sql,sqlite,greatest-n-per-group,Mysql,Sql,Sqlite,Greatest N Per Group,在我的示例中,我有一个包含不同场馆信息的表,其中包含城市、场馆名称和容量列。我需要为每个城市中容量最高的场馆选择城市和场馆名称。因此,如果我有数据: city | venue | capacity LA | venue1 | 10000 LA | venue2 | 20000 NY | venue3 | 1000 NY | venue4 | 500 。。。查询应返回: LA | venue2 NY | venue3 有谁能给我一些关于如何在SQL中完成这个查询的建议吗?我陷
有谁能给我一些关于如何在SQL中完成这个查询的建议吗?我陷入了连接和嵌套查询:P.谢谢 一种方法是不存在:
select t.city, t.venue
from tbl t
join (select city, max(capacity) as max_capacity from tbl group by city) v
on t.city = v.city
and t.capacity = v.max_capacity
一种方法是使用“不存在”: 常用的方法是使用max: 常用的方法是使用max:
您可以使用外部应用程序对这些值进行排序,并将结果带回主查询 另一种选择是使用RowNum函数
您可以使用外部应用程序对这些值进行排序,并将结果带回主查询 另一种选择是使用RowNum函数
首先,编写一个查询,查找按城市分组的最大容量,然后查询与该城市和容量匹配的场馆…首先,编写一个查询,查找按城市分组的最大容量,然后查询与该城市和容量匹配的场馆。。。
select i.*
from info i
where not exists (select 1
from into i2
where i2.city = i.city and i2.capacity > i.capacity);
select y.city, y.venue_name
from yourtable y
join (select city, max(capacity) maxcapacity
from yourtable
group by city
) t on y.city = t.city and y.capacity = t.maxcapacity
SELECT
v.city,
Ranked.Venue,
Ranked.Capacity
FROM Venues v WITH (NOLOCK)
Outer Apply
(
SELECT TOP 1
Venue, Capacity
FROM Venues Ranked WITH (NOLOCK)
WHERE v.City = Ranked.City
ORDER BY Capacity DESC
) as Ranked
GROUP BY
v.city,
Ranked.Venue,
Ranked.Capacity