每组具有最大值的行 - SQLite

pun*_*ish 2 sqlite

给定一个表,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 实现这一目标?

CL.*_*CL. 6

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)


jue*_*n d 1

连接该结果以获得完整的表记录

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)