【发布时间】:2021-05-27 17:19:58
【问题描述】:
对于human 中的每个hid,我需要用flag=1 计算事件的最大连续发生次数。序列是按日期生成的。
有一个我的表的例子:
CREATE TABLE max_in_row
([hit_finish_dttm] varchar(13), [hid] varchar(13), [agent_login] varchar(57), [flg_no_talk] int)
;
INSERT INTO max_in_row
([hit_finish_dttm], [hid], [agent_login], [flg_no_talk])
VALUES
('2020-03-01', 'EQERR13', 'Dmitrii', 0),
('2020-03-02', 'EQERR13', 'Dmitrii', 1),
('2020-03-03', 'EQERR13', 'Dmitrii', 1),
('2020-03-01', 'RR13EQE', 'Dmitrii', 0),
('2020-03-02', 'RR13EQE', 'Dmitrii', 1),
('2020-03-03', 'RR13EQE', 'Dmitrii', 0),
('2020-03-04', 'RR13EQE', 'Dmitrii', 0),
('2020-03-05', 'RR13EQE', 'Dmitrii', 1),
('2020-03-06', 'RR13EQE', 'Dmitrii', 1),
('2020-03-07', 'RR13EQE', 'Dmitrii', 0),
('2020-03-01', 'EQERR13', 'Alex', 1),
('2020-03-02', 'EQERR13', 'Alex', 1),
('2020-03-03', 'EQERR13', 'Alex', 0),
('2020-03-04', 'EQERR13', 'Alex', 1),
('2020-03-05', 'EQERR13', 'Alex', 1),
('2020-03-06', 'EQERR13', 'Alex', 1),
('2020-03-02', 'RR13EQE', 'Alex', 1),
('2020-03-03', 'RR13EQE', 'Alex', 0),
('2020-03-04', 'RR13EQE', 'Alex', 1)
;
我希望在下一张桌子上收到结果:
Dmitrii | EQERR13 | 2
Dmitrii | RR13EQE | 2
Alex | EQERR13 | 3
Alex | RR13EQE | 1
我确实试图克服row_number(order by date) - row_number(partition by human, hid, flag order by flag) 的问题,但我不知道为什么它不起作用。
非常感谢!
【问题讨论】:
-
您的问题被标记为 Postgres 但示例代码是 SQL Server。
-
@GordonLinoff 完成
标签: sql sql-server