gpt4 book ai didi

sql - 如何根据同一表列中的值在 SQL 中进行 SELECT?

转载 作者:行者123 更新时间:2023-11-29 12:40:12 24 4
gpt4 key购买 nike

我有下表

| id | date       | team |
|----|------------|------|
| 1 | 2019-01-05 | A |
| 2 | 2019-01-05 | A |
| 3 | 2019-01-01 | A |
| 4 | 2019-01-04 | B |
| 5 | 2019-01-01 | B |

如何查询表格以接收团队的最新值?

例如,上表的结果将是 ids 1,2,4

最佳答案

在这种情况下,您可以使用窗口函数:

select t.*
from (select t.*, rank() over (partition by team order by date desc) as seqnum
from t
) t
where seqnum = 1;

在某些数据库中,相关子查询使用正确的索引会更快(我还没有用 Postgres 测试过):

select t.*
from t
where t.date = (select max(t2.date) from t t2 where t2.team = t.team);

如果您希望每个团队只排一行,那么规范的答案是:

select distinct on (t.team) t.*
from t
order by t.team, t.date desc;

但是,这在这种情况下不起作用,因为您需要最近日期的所有行。

关于sql - 如何根据同一表列中的值在 SQL 中进行 SELECT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54163092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com