在一列中查找 N 个最大的元素
Finding N Largest elements in a column
我有一个 city table 由 ID
、Name
、CountryCode
和 [=13 等字段组成=].我想找到最大 Population
的前 N(比如 N = 5)个城市。
一种非常幼稚的方法是使用 MAX()
组函数找到人口最多的城市,然后通过此处提到的方法的变体找到其余城市。
What is the simplest SQL Query to find the second largest value?
有人知道实现目标的更好方法吗?
如果您只想要前 N 个城市,使用 order by
和 limit
将是一个更简单的方法:
SELECT *
FROM city
ORDER BY population DESC
LIMIT 5 -- or any other N
SELECT *
FROM cities AS c1
WHERE
(SELECT COUNT(*)
FROM cities AS c2
WHERE c2.population > c1.population)<5;
如果多个城市的人口相同,则此查询可能 return 超过五行。当存在绑定值时,您没有指定 "top 5" 的预期结果。
我有一个 city table 由 ID
、Name
、CountryCode
和 [=13 等字段组成=].我想找到最大 Population
的前 N(比如 N = 5)个城市。
一种非常幼稚的方法是使用 MAX()
组函数找到人口最多的城市,然后通过此处提到的方法的变体找到其余城市。
What is the simplest SQL Query to find the second largest value?
有人知道实现目标的更好方法吗?
如果您只想要前 N 个城市,使用 order by
和 limit
将是一个更简单的方法:
SELECT *
FROM city
ORDER BY population DESC
LIMIT 5 -- or any other N
SELECT *
FROM cities AS c1
WHERE
(SELECT COUNT(*)
FROM cities AS c2
WHERE c2.population > c1.population)<5;
如果多个城市的人口相同,则此查询可能 return 超过五行。当存在绑定值时,您没有指定 "top 5" 的预期结果。