【发布时间】:2018-12-11 15:30:50
【问题描述】:
我的数据库正在保存我公司拨打的电话。
我需要做一个选择查询,选择所有唯一的人,并为每个人选择:
- 呼入电话数
- 外呼次数
- 总来电
- 平均通话时间
我试过这个,但在选择呼入和呼出电话时卡住了。
我将解释如何查看呼入或呼出的时间。
当OriginationDevice 被填满时,它对DestinationName 的入站调用。
当DestinationDevice 被填满时,它对OriginationName 的出站呼叫。
我需要每个 Unique DestinationName 或 OriginationName 并列出呼入、呼出和总呼叫的数量,当然还有平均呼叫时间。
我已经走了很远,但我似乎无法在一个查询中获得入站和出站。
查看我的SQL Fiddle,您可以在其中帮助我!
谁能帮我获取每个人的平均通话时间、呼出电话、呼入电话和总通话时间?
我的查询尝试:
SELECT * FROM (
SELECT
IFNULL (SUM( CASE WHEN OriginationDevice != '' AND ConnectTime != '' THEN
DATEDIFF(ConnectTime, EndTime) ELSE null END ) / COUNT(case when
OriginationDevice <> '' then 1 else null end), 0) as calltime,
COUNT(case when OriginationDevice != '' then 1 else null end) as inbound,
COUNT(case when DestinationDevice != '' AND OriginationDevice = '' then 1
else null end) as outbound,
COUNT(*) as total,
DestinationName
FROM calls WHERE (YEAR(EndTime) = 2018 AND MONTH(EndTime) = 12) and
(OriginationDevice != '' or DestinationDevice != '')
AND ConnectTime != '' GROUP BY DestinationName
) as t1
WHERE total > 0 ORDER BY total DESC, calltime
这是表sql:
CREATE TABLE IF NOT EXISTS `calls` (
`OriginationName` varchar(200) NOT NULL,
`DestinationName` varchar(200) NOT NULL,
`ConnectTime` DATETIME NOT NULL,
`EndTime` DATETIME NOT NULL,
`OriginationDevice` varchar(200) NOT NULL,
`DestinationDevice` varchar(200) NOT NULL
) DEFAULT CHARSET=utf8;
INSERT INTO `calls` (`OriginationName`, `DestinationName`, `ConnectTime`, `EndTime`, `OriginationDevice`, `DestinationDevice`) VALUES
('Person 1', 'Person 5', '2018-12-11 11:26:12', '2018-12-11 11:26:18', '243', '(call routing)'),
('Person 2', 'Person 3', '2018-12-11 10:16:12', '2018-12-11 10:16:54', '', '(call routing)'),
('Person 5', 'Person 1', '2018-12-11 10:21:12', '2018-12-11 10:22:22', '', ''),
('Person 2', 'Person 1', '2018-12-11 11:26:12', '2018-12-11 11:26:52', '233', ''),
('Person 1', 'Person 4', '2018-12-11 12:26:12', '2018-12-11 12:28:25', '456', ''),
('', 'Person 1', '2018-12-11 14:56:12', '2018-12-11 14:57:24', '', '(call routing)'),
('Person 3', '', '2018-12-11 15:26:12', '2018-12-11 15:26:37', '223', '');
我的预期结果在查询中。
【问题讨论】:
-
SQLfiddle 很棒,但也将示例数据和预期结果放在这里,以及您的查询尝试。 (格式化文本,而不是图像。)
-
你的 SQL Fiddle 不适合我,所以我看不到数据。
-
这怎么可能?那它对我有什么作用?我在问题中添加了查询和表 sql
-
明天看看有没有答案;)