gpt4 book ai didi

SQL:按方向过滤行

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

我有一个包含 2 列日期(时间戳)、状态( bool 值)的表格。我有很多值(value),例如:

| date                      | status    |
|-------------------------- |-------- |
| 2018-11-05T19:04:21.125Z | true |
| 2018-11-05T19:04:22.125Z | true |
| 2018-11-05T19:04:23.125Z | true |
....

我需要得到这样的结果:

| date_from                 | date_to                   | status    |
|-------------------------- |-------------------------- |-------- |
| 2018-11-05T19:04:21.125Z | 2018-11-05T19:04:27.125Z | true |
| 2018-11-05T19:04:27.125Z | 2018-11-05T19:04:47.125Z | false |
| 2018-11-05T19:04:47.125Z | 2018-11-05T19:04:57.125Z | true |

所以,我需要过滤所有“相同”的值,并只返回状态为真/假的时期。

我这样创建查询:

SELECT max("current_date"), current_status, previous_status
FROM (SELECT date as "current_date",
status as current_status,
(lag(status, 1) OVER (ORDER BY msgtime))::boolean AS previous_status
FROM "table" as table
) as raw_data
group by current_status, previous_status

但作为回应,我只得到不超过 4 个值

最佳答案

这是一个缺口和孤岛问题。一个典型的方法是使用行号的差异:

select min(date), max(date), status
from (select t.*,
row_number() over (order by date) as seqnum,
row_number() over (partition by status order by date) as seqnum_s
from t
) t
group by status, (seqnum - seqnum_s);

关于SQL:按方向过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53161069/

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