我有一个城市表,其中包含ID
,Name
,CountryCode
和Population
等字段。我想找到最大Population
的前N个(比如N = 5个)城市。
一种非常天真的方式是使用MAX()
组函数找到人口最多的城市,并通过此处提到的方法的变体找到其余的。
What is the simplest SQL Query to find the second largest value?
有没有人知道实现目标的更好方法?
答案 0 :(得分:2)
如果您只想要前N个城市,那么使用order by
和limit
会更简单:
SELECT *
FROM city
ORDER BY population DESC
LIMIT 5 -- or any other N
答案 1 :(得分:1)
switch(a.getType()){
case COMPLEX:
Complex w = (Complex)a.getLiteral();
//Doing something
break;
case MATRIX:
Matrix w = (Matrix)a.getLiteral();
//Doing something
break;
case VARIABLE:
Variable w = (Variable)a.getLiteral();
//Doing something
break;
// other types..
default: // always include a default for your switch case, just in case..
throw new RuntimeException("unknown type "+a.getType());
}
如果有多个城市具有相同的人口,则此查询可能会返回五行以上。当存在绑定值时,您未指定“前5名”的结果。