假设下表为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|
-----------------------------------------
您似乎正在基于account_id
和browser_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 <>小提琴。