【发布时间】:2021-04-11 03:17:05
【问题描述】:
我有一张包含一些客户购买数据的表格。我想知道顾客在店里的进出时间是多少,我为此编写了下面的 SQL 查询。如何将其转换为 python pandas?
SELECT MyTable.*,
LAG(EventTypeID, 1, 0)
OVER ( PARTITION BY ID,Name
ORDER BY Time) AS LastEvent ,
LEAD(EventTypeID, 1, 0)
OVER ( PARTITION BY ID,Name
ORDER BY Time) AS NextEvent
FROM DL.dbo.DataTable MyTable
输入:
+-------------+--------+--------+-------+
| EventTypeID | ID | Name | Time |
+-------------+--------+--------+-------+
| 1 | QWERTY | Joseph | 10.20 |
| 1 | QWERTY | Joseph | 10.25 |
+-------------+--------+--------+-------+
想要的结果:
+-------------+--------+--------+-------+-----------+-----------+
| EventTypeID | ID | Name | Time | LastEvent | NextEvent |
+-------------+--------+--------+-------+-----------+-----------+
| 1 | QWERTY | Joseph | 10.20 | 0 | 1 |
| 1 | QWERTY | Joseph | 10.25 | 1 | 0 |
+-------------+--------+--------+-------+-----------+-----------+
【问题讨论】:
-
是否可以选择使用
pd.read_sql将sql 直接读入数据框?
标签: python sql pandas lag partition-by