我有一個看起來像這樣的資料庫:
timestamp | entity_id
-------------------- ----------
2021-12-01 10:00:00 | A
2021-12-01 09:00:00 | A
2021-12-01 08:00:01 | A
2021-12-01 08:00:00 | B
2021-12-01 07:00:00 | A
timestamp是UNIQUE,但我事先不知道不同的時間戳相距多遠。我怎樣才能寫出一個能讓我得到以下結果的陳述句?
entity_id | following_entity_id | count
---------- --------------------- ------
A | A | 2
A | B | 1
B | A | 1
使用 Pandas 時,我可能會使用它的shift方法,但在這種情況下我需要使用原始 SQL 來執行此操作。
uj5u.com熱心網友回復:
您需要LAG()視窗函式來獲取前一個(按時間順序)的值entity_id(或LEAD()視窗函式來獲取以下內容),然后進行聚合:
SELECT entity_id, following_entity_id, COUNT(*) count
FROM (
SELECT *, LAG(entity_id) OVER (ORDER BY timestamp) following_entity_id
FROM tablename
)
WHERE following_entity_id IS NOT NULL
GROUP BY entity_id, following_entity_id;
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/325065.html
