gpt4 book ai didi

sql - 返回最新的 'streak' 数据行

转载 作者:行者123 更新时间:2023-11-29 11:35:34 25 4
gpt4 key购买 nike

给定一个包含以下数据的简单表格:

 id | result |   played   
----+--------+------------
7 | L | 2012-01-07
6 | L | 2012-01-06
5 | L | 2012-01-05
4 | W | 2012-01-04
3 | W | 2012-01-03
2 | L | 2012-01-02
1 | W | 2012-01-01

我如何使用 PostgreSQL 编写查询以返回最近的连续失败或连续获胜的行?在这种情况下,我正在寻找以下结果:

 id | result |   played   
----+--------+------------
7 | L | 2012-01-07
6 | L | 2012-01-06
5 | L | 2012-01-05

我猜答案是使用 lag() 和分区语法,但我似乎无法确定。

最佳答案

假设(你没有说)

  • result 恰好有两个不同的值:(W, L)
  • id 是连续的,因为最新的条目具有最高的 id

这样就可以了:

SELECT *
FROM tbl
WHERE id > (
SELECT max(id)
FROM tbl
GROUP BY result
ORDER BY max(id)
LIMIT 1
);

这会获取 WL 的最新 ID,两者中较早的一个。所以 LIMIT 1 得到相反结果的最后一个条目。 id 高于该值的行构成最新的连续记录。瞧。

关于sql - 返回最新的 'streak' 数据行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10004328/

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