req_id_mem = ""
req_workflow_mem = ""
collect_state_main = []
collect_state_temp = []
for req_id, req_datetime, req_workflow in zip(df["TICKET_ID"], df["DATETIMESTANDARD"], df["STATUS"]):
if req_id_mem == "" or req_id_mem != req_id:
req_id_mem = req_id
req_workflow_mem = ""
collect_state_temp = []
if req_workflow_mem == "" and req_workflow == "Pending Complete" and req_id_mem == req_id:
req_workflow_mem = req_workflow
collect_state_temp.append(req_id)
collect_state_temp.append(req_workflow)
collect_state_temp.append(req_datetime)
if req_workflow_mem == "Pending Complete" and req_workflow == "Inforce" and req_id_mem == req_id:
req_workflow_mem = req_workflow
collect_state_temp.append(req_workflow)
collect_state_temp.append(req_datetime)
collect_state_main.append(collect_state_temp)
collect_state_temp = []
DataFrame:
TICKET_ID
DATETIMESTANDARD
STATUS
79355138
3.09.2024 11:54 :18 утра
Открыто
79355138
3.09.2024 21:01:12
Открыто
< td>79355138
6.09.2024 16:52:10
Закрыто
79355138
6.09.2024 16:52:12
ОткрытоОткрыто td>
79355138
10.09.2024 16:01:24
Закрыто
79446344
27 августа /2024 13:32:54
Открыто
79446344
11.09.2024 9:40:17
Закрыто
79446344
11.09.2024 9:40:24
Закрыто
79446344
11.09.2024 9:42:14
< td>Открыть
Результат:
Он определяет первое состояние Открыто для TICKET_ID и ищет ближайший статус Закрыто
Для каждого случая будет повторяться поиск пары открытия и закрытия (будут учитываться только первое открытие и первое закрытие)
Моя проблема в том, что я застрял, поскольку пары могут встречаться более двух раз. Я пробовал Rank в sql, но он возвращает только первый экземпляр пары, но не другие пары
Мне нужна помощь с преобразованием моего кода Python в SQL: [code]req_id_mem = "" req_workflow_mem = ""
collect_state_main = [] collect_state_temp = []
for req_id, req_datetime, req_workflow in zip(df["TICKET_ID"], df["DATETIMESTANDARD"], df["STATUS"]): if req_id_mem == "" or req_id_mem != req_id: req_id_mem = req_id req_workflow_mem = "" collect_state_temp = []
if req_workflow_mem == "" and req_workflow == "Pending Complete" and req_id_mem == req_id: req_workflow_mem = req_workflow collect_state_temp.append(req_id) collect_state_temp.append(req_workflow) collect_state_temp.append(req_datetime)
if req_workflow_mem == "Pending Complete" and req_workflow == "Inforce" and req_id_mem == req_id: req_workflow_mem = req_workflow collect_state_temp.append(req_workflow) collect_state_temp.append(req_datetime) collect_state_main.append(collect_state_temp) collect_state_temp = [] [/code] DataFrame:
TICKET_ID DATETIMESTANDARD STATUS
79355138 3.09.2024 11:54 :18 утра Открыто
79355138 3.09.2024 21:01:12 Открыто
< td>79355138 6.09.2024 16:52:10 Закрыто
79355138 6.09.2024 16:52:12 ОткрытоОткрыто td>
79355138 10.09.2024 16:01:24 Закрыто
79446344 27 августа /2024 13:32:54 Открыто
79446344 11.09.2024 9:40:17 Закрыто
79446344 11.09.2024 9:40:24 Закрыто
79446344 11.09.2024 9:42:14 < td>Открыть
Результат: [list] [*]Он определяет первое состояние [b]Открыто[/b] для TICKET_ID и ищет ближайший статус [b]Закрыто[/b] [*]Для каждого случая будет повторяться поиск пары открытия и закрытия (будут учитываться только первое открытие и первое закрытие) [/list] [b]Моя проблема[/b] в том, что я застрял, поскольку пары могут встречаться более двух раз. Я пробовал Rank в sql, но он возвращает только первый экземпляр пары, но не другие пары