Mysql 如何计算平均间隔时间

Mysql 如何计算平均间隔时间,mysql,sql,Mysql,Sql,如何计算平均间隔时间 +-------------+----------+----------+--------+------------------+ | customer_id | date | time | answer | missed_call_type | +-------------+----------+----------+--------+------------------+ | 101 | 2018/8/3 | 12:13:00 | no

如何计算平均间隔时间

+-------------+----------+----------+--------+------------------+
| customer_id |   date   |   time   | answer | missed_call_type |
+-------------+----------+----------+--------+------------------+
|         101 | 2018/8/3 | 12:13:00 | no     | employee         |
|         102 | 2018/8/3 | 12:15:00 | no     | customer         |
|         103 | 2018/8/3 | 12:20:00 | no     | employee         |
|         102 | 2018/8/3 | 15:15:00 | no     | customer         |
|         101 | 2018/8/3 | 18:15:00 | no     | employee         |
|         105 | 2018/8/3 | 18:18:00 | no     | customer         |
|         102 | 2018/8/3 | 19:18:00 | no     | employee         |
+-------------+----------+----------+--------+------------------+
我得到了一张表,看起来像这样,我想计算那些不接电话的人的平均间隔时间。对于本例,平均间隔时间为:

{(18:15:00-12:13:00)+[(19:18:00-15:15:00)+(15:15:00-12:15:00)]/2}/2


请查找以下MSSQL代码

CREATE TABLE customer_data (customer_id BIGINT, date DATE, time time, answer VARCHAR(100), missed_call_type VARCHAR(100));

INSERT INTO customer_data
VALUES
(101, '2018/8/3', '12:13:00', 'no', 'employee'),
(102, '2018/8/3', '12:15:00', 'no', 'customer'),
(103, '2018/8/3', '12:20:00', 'no', 'employee'),
(102, '2018/8/3', '15:15:00', 'no', 'customer'),
(101, '2018/8/3', '18:15:00', 'no', 'employee'),
(105, '2018/8/3', '18:18:00', 'no', 'customer'),
(102, '2018/8/3', '19:18:00', 'no', 'employee')

select cd.customer_id, answer, missed_call_type,
        CAST(CAST(cd.date as VARCHAR(10))+' ' +CAST(cd.time as VARCHAR(10)) as datetime) as date,
        ROW_NUMBER() OVER(PARTITION BY cd.customer_id ORDER BY date desc, time desc) as ranks
INTO #temP
from customer_data cd
order by cd.customer_Id, ranks;

select AVG(DATEDIFF(MINUTE, x1.date, x2.date)) as avg_mins
from #temP x1
INNER JOIN #temP x2 ON x1.customer_id = x2.customer_id 
WHERE x2.ranks = (x1.ranks-1)

请查找以下MSSQL代码

CREATE TABLE customer_data (customer_id BIGINT, date DATE, time time, answer VARCHAR(100), missed_call_type VARCHAR(100));

INSERT INTO customer_data
VALUES
(101, '2018/8/3', '12:13:00', 'no', 'employee'),
(102, '2018/8/3', '12:15:00', 'no', 'customer'),
(103, '2018/8/3', '12:20:00', 'no', 'employee'),
(102, '2018/8/3', '15:15:00', 'no', 'customer'),
(101, '2018/8/3', '18:15:00', 'no', 'employee'),
(105, '2018/8/3', '18:18:00', 'no', 'customer'),
(102, '2018/8/3', '19:18:00', 'no', 'employee')

select cd.customer_id, answer, missed_call_type,
        CAST(CAST(cd.date as VARCHAR(10))+' ' +CAST(cd.time as VARCHAR(10)) as datetime) as date,
        ROW_NUMBER() OVER(PARTITION BY cd.customer_id ORDER BY date desc, time desc) as ranks
INTO #temP
from customer_data cd
order by cd.customer_Id, ranks;

select AVG(DATEDIFF(MINUTE, x1.date, x2.date)) as avg_mins
from #temP x1
INNER JOIN #temP x2 ON x1.customer_id = x2.customer_id 
WHERE x2.ranks = (x1.ranks-1)

你为什么使用这个功能?你说的是平均值吗?注意:你可以将日期和时间存储在时间戳类型的一列中。你为什么使用这个函数?你说的是平均值吗?注意:你可以在一列timestamp类型中存储日期和时间。