首页 > 解决方案 > 根据组 SQL 中的最小值查找值

问题描述

我想在一组排名中找到最年轻的人的名字。一切都在 Person 表中,字段为 PName(various)、PAge(various)、PRanking(0-3)。我希望找到每个排名组(0-3)中最年轻的人的名字。因此,如果每个组中有一个人有排名,查询将返回 4 个名字(每个排名中最年轻的人)。

到目前为止,我的方法是:

SELECT PName
FROM Person
WHERE PAge = MIN(PAge)
GROUPBY PRanking

标签: sqlgreatest-n-per-group

解决方案


您可以加入最小年龄的子选择

   select P.PName from Person P
    inner join (
    SELECT ranking, min(age)  min_age
    FROM Person
    GROUP BY PRanking 
    ) t on t.ranking  = p.ranking  and t.min_age = p.age

推荐阅读