我需要為任務歷史中的每一次名稱變化創建一個ID。 該等級需要對每個任務和步驟進行重啟。
我最接近我的目標的是使用下面的代碼。
但是,當一個人再次出現在歷史行動串列中時,它并沒有產生正確的結果。
DENSE_RANK() OVER (ORDER BY TaskName, Person)
提前感謝
uj5u.com熱心網友回復:
你可以使用lag()來查看一個人的變化。 然后使用累計和:
select t.*。
sum(case when prev_person = personthen 0 else 1 end) over
(partition by task_name order by timestamp) as desired_output
from (select t.*,
lag(person) over(partition by task_name order by timestamp) as prev_person
from t
) t ;
注意:我把你的問題理解為你想為每項任務分別獲得數字("每次任務歷史中的名稱變化")。
編輯:
基于你的評論:
select t.*。
sum(case when prev_person = person and prev_stop_name = step_name then 0 else 1 end) over
(partition by task_name order by timestamp) as desired_output
from (select t.*,
lag(person) over(partition by task_name order by timestamp) as prev_person,
lag(step_name) over(partition by task_name order by timestamp) as prev_step_name
from t
) t ;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/307276.html
標籤:
上一篇:用于更新列值的SQL函式
下一篇:<p>我試圖從兩個pandas資料框中創建一個字典,下面是一個資料框的快照,該資料框應該是用來保存鍵值的:</p><p>我試圖從兩個pandas資料框中創建一個字典

