表格式: customerID, serviceID, sendTime, timelag, contentText
其中 sendTime 是消息发送时间 timelag 指的是当前消息发送时间 减去 上一条消息发送时间, 单位:秒
同一个客服和客户的对话,可能跨多天/多月。 现在想对这些会话进行切分,目前标准是 当 timelag > 600, (十分钟), 认为是一个新会话开始。
现在想新建一列 sessionID, 表示对话的 ID 。
我现在想到的方式是,设置一个变量,初始值为 1, 遇到 timelag >600 时, 该变量自增 1
但我不会写,请教
1
aw2350 2023-07-20 15:12:33 +08:00
建议用你的需求场景来描述,而不是上来就用你框定死的字段方案
|
2
rraz0r0 2023-07-20 20:50:51 +08:00
``
SELECT ( CASE customerId WHEN @lastCustomerId THEN @incrSeq := @incrSeq + 1 ELSE @incrSeq := 1 END ) sessionId, ( @lastCustomerId := customerId ) AS customerId, timelag, sendTime FROM `session`, ( SELECT @incrSeq := 1, @lastCustomerId := 0 ) AS t WHERE timelag > 600 ORDER BY customerId, sendTime; `` |