我有下表,我需要找到两个连续的天有不同的状态为同一个人(天之间没有差距)。
name date status
-------------------------------
John 2020-06-01 submitted
John 2020-06-02 pending
John 2020-06-03 approved
John 2020-06-04 approved
Amy 2020-06-02 pending
Amy 2020-06-03 pending
Amy 2020-06-04 pending
Dan 2020-06-02 submitted
Dan 2020-06-03 approved
Dan 2020-06-04 approved
Mary 2020-06-03 submitted
Mary 2020-06-04 pending
输出如下:
name date status
-------------------------------
John 2020-06-01 submitted
John 2020-06-02 pending
John 2020-06-03 approved
Dan 2020-06-02 submitted
Dan 2020-06-03 approved
Mary 2020-06-03 submitted
Mary 2020-06-04 pending
目前,我导出了这个表,并编写了一个python代码来实现这一点。但是,我想知道,仅仅使用sql是否有可能实现这一点(我查看了sql:只检索其值已更改的记录,但由于 status
字段是字符串而不是数字)谢谢!
2条答案
按热度按时间pkwftd7m1#
我将根据名称、连续天数和不同状态自动加入表:
chhkpiq42#
与
LAG()
以及LEAD()
窗口功能:请看演示。
结果: