我正在尝试在我的SQL上创建一个额外的列,我可以识别user_id是否生成了后续(甚至第三行)。
如果是这样,计算连接时间和上一行断开时间之间的约会。
如果没有重复的user_id,则响应应为NULL。
以下是我的数据和说明的屏幕截图:
我尝试了DATEDIFF公式,但没有成功。
有人可以帮我这个吗?我真的很感激任何意见。
SELECT id,
user_id,
connected_at,
disconnected_at,
IFNULL(DateDiff('second', Lookup(disconnected_at), -1), connected_at)
FROM data
ORDER BY id, user_id, connected_at
答案 0 :(得分:0)
比较不同行中的值时,需要将表连接到自身以获取第二行。试试这个:
SELECT
a.id,
a.user_id,
a.connected_at,
a.disconnected_at,
DateDiff('second',b.`connected_at`,a.`disconnected_at`) as `time_diff`
FROM `data` a
JOIN `data` b
ON a.`user_id` = b.`user_id` AND b.`connected_at` > a.`disconnected_at`