Postgresql窗口函数,用于获取帐户登录和帐户切换行为

问题描述 投票:1回答:1

假设下表为DDL。反正有通过窗口函数获取下面的SQL查询结果吗?

create table timeline_log_in
    (date text,
    account_id text,
    browser_cookie_id text
    );

insert into timeline_log_in
    values
        ('2020-1-1','e12345','123'),
        ('2020-1-2','e12345','123'),
        ('2020-1-3','e67890','123'),
        ('2020-1-4','e67890','123'),
        ('2020-1-5','e12345','123'),
        ('2020-1-5','e67890','456'),
        ('2020-1-6','e12345','789');

所需的输出:

-----------------------------------------
browser_cookie_id | account_id | date   |
-----------------------------------------
123               |e12345      |2020-1-1|
123               |e67890      |2020-1-3|
123               |e12345      |2020-1-5|
456               |e67890      |2020-1-5|
789               |e12345      |2020-1-6|
-----------------------------------------
sql postgresql window-functions
1个回答
0
投票

您似乎正在基于account_idbrowser_cookie_id定义组。然后,您只需要第一行。这表明lag()

select tli.*
from (select tli.*,
             lag(date) over (partition by account_id, browser_cookie_id order by date) as prev_group_date,
             lag(date) over (order by date) as prev_date
      from timeline_log_in tli
     ) tli
where prev_group_date is null or prev_group_date <> prev_date;

Here是db <>小提琴。

© www.soinside.com 2019 - 2024. All rights reserved.