同一聊天中两条消息的响应时间

时间:2019-02-21 10:55:07

标签: mysql sql mysql-workbench response sql-date-functions

场景

一个chat_channel可以有多个MESSAGE_ID,它们显示在单独的行上。

INSERT INTO messages_tbl 
            (message_id, 
             chat_channel, 
             user_type, 
             message_type, 
             message_custom_type, 
             msg_created_on) 
VALUES      ('00001', 
             'chat_1', 
             'consumer', 
             'msg', 
             'example message', 
             '2018-09-27 10:14:42'); 

INSERT INTO messages_tbl 
            (message_id, 
             chat_channel, 
             user_type, 
             message_type, 
             message_custom_type, 
             msg_created_on) 
VALUES      ('00002', 
             'chat_1', 
             'merchant', 
             'msg', 
             'example message', 
             '2018-09-27 11:14:42'); 

在此示例中,我想比较并计算从消费者发送的第一条消息到商家发送的第二条消息的响应时间。有关时间和日期的数据在MSG_CREATED_ON列中。

我能够进行计算,但是由于它们在不同的行上而挣扎。我曾尝试在CHAT_CHANNEL上对它们进行分区,但没有运气。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

下面是一种方法-

    this.validUntil = "2020-02-29";
    this.validUntil = moment(this.validUntil);
    this.validUntil = this.validUntil.format('DD-MM-YYYY');
    this.finAuth = this.validUntil;
    this.finAuth = moment().add(moment.duration(this.validityPeriodAsDay, 'days')).format('DD-MM-YYYY');

答案 1 :(得分:0)

鉴于您使用的是MySQL 8+,我们可以利用分析功能。这是一种方法:

axios.get('https://newsapi.org/v2/everything?q=' + this.query + "&apiKey=6d2c267eacd549e79d27f597d7917699"')

我使用WITH cte AS ( SELECT CHAT_CHANNEL, MSG_CREATED_ON, ROW_NUMBER() OVER (PARTITION BY USER_TYPE ORDER BY MSG_CREATED_ON) rn FROM MESSAGES_TBL ) SELECT t1.CHAT_CHANNEL, t1.rn AS conversation_number, TIMESTAMPDIFF(MINUTE, t1.MSG_CREATED_ON, t2.MSG_CREATED_ON) AS diff_in_minutes FROM cte t1 LEFT JOIN cte t2 ON t1.CHAT_CHANNEL = t2.CHAT_CHANNEL AND t1.rn = t2.rn AND t1.USER_TYPE = 'consumer' AND t2.USER_TYPE = 'merchant' 为每个聊天频道的消费者和商人之间的每个配对配对分配一个公共值。然后,我一起加入聊天频道,并且谈话内容相同。