给定一个表,columns(name, lat, lon, population, type)
其中每个name有很多行,我想选择按名称分组的行,其中人口最多。如果我将自己限制在姓名和人口范围内,则以下内容有效
SELECT name, Max(population)
FROM table WHERE name IN ('a', 'b', 'c')
GROUP BY name;
Run Code Online (Sandbox Code Playgroud)
但我想要其他列 - lat, lon, type
- 以及结果。如何使用 SQLite 实现这一目标?
SQLite 允许你只列出你想要的其他列;它们保证来自具有最大值的行:
SELECT name, lat, lon, Max(population), type
FROM table
WHERE name IN ('a', 'b', 'c')
GROUP BY name;
Run Code Online (Sandbox Code Playgroud)
连接该结果以获得完整的表记录
SELECT t1.*
FROM your_table t1
JOIN
(
SELECT name, Max(population) as max_population
FROM your_table
WHERE name IN ('a', 'b', 'c')
GROUP BY name
) t2 ON t1.name = t2.name
and t1.population = t2.max_population
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
537 次 |
最近记录: |