【问题标题】:how to get the oldest person?如何获得最年长的人?
【发布时间】:2016-10-30 19:52:34
【问题描述】:

我想使用 group by 或任何聚合函数,而不是这个:

select birthday
from table
where birthday in ( select min(birthday) from table)

【问题讨论】:

  • MIN一个聚合函数。你想达到什么目的?
  • 您当前的查询有什么问题?
  • @Marco 如果生日相同,你需要所有人还是只有一个人?
  • @vc74 我需要看到他们所有人(生日相同)
  • @jarlh 我想使用聚合函数。

标签: sql postgresql group-by max


【解决方案1】:

我猜你不仅对生日感兴趣,还对其他列感兴趣(否则 select min(birthday) from table 会起作用)

select *
from table
order by birthday
limit 1;

应该这样做

【讨论】:

  • 这样,它只会显示一次。如果我有不止一个生日相同,它会告诉我所有的。
  • @Marco 因此我在您的原始帖子中提出了问题;)
  • @vc74 我回答了你的问题。抱歉,我现在看到了
【解决方案2】:

如果有人在 2.5 年后来到这里 - 如果您只需要一个人,vc 74 的答案是一个很好的答案。如果你需要所有年龄最大的人,试试这个:

SELECT
    *
FROM 
    table
WHERE 
    birthday = (SELECT max(birthday) FROM table);

或(使用 vc 74 的答案):

SELECT
    *
FROM 
    table
WHERE 
    birthday = (SELECT birthday FROM table ORDER BY birthday DESC LIMIT 1);

【讨论】:

    【解决方案3】:

    要获取所有生日日期较短的记录,您可以尝试以下代码:

    select *
    from table
    having birthday = min(birthday)
    

    【讨论】:

    • 查询无效。 HAVING 子句中的列必须在 GROUP BY 中列出,或者作为聚合函数的参数。
    猜你喜欢
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多