分析MySQL DB中的电话呼叫记录

时间:2009-08-06 00:46:03

标签: c# mysql voip

上次我在这里问了一个问题,我对如何解决某个特定问题有很多好主意。就像我上次解释的那样,编程只是我喜欢做的事情,但这不是我在学校学习的东西,所以我没有适当的做事方法。我是一名电气工程师,在经济衰退中挣扎着做一些编程演出。

目前我正在为一家做VoIP的公司工作。他们购买的软件缺乏其他系统的许多重要功能,所以我决定开始构建一些工具,让我可以做这些缺失的事情。

我认为非常重要的一件事是在特定的给定时间内找出CALLS的MAX LOAD(最大同时呼叫数)。例如,我想知道8月3日的最大同时通话时间。

现在,幸运的是,这个软件将所有信息存储在MySQL数据库中,所以我有一个表,其中包含自系统首次开始运行以来的所有调用。

“Calls”表有2个名为“call_start”和“call end”的文件,它们是“datetime”类型。

根据这些信息,我想弄清楚如何查询数据库,并找出在我指定的时间范围内同时有效的最大活动数。

我主要使用C#,因此欢迎使用C#的想法。我不确定它是否可以完全在MySQL中完成,但这也可以。

感谢大家的帮助。

3 个答案:

答案 0 :(得分:1)

前一段时间有一个类似的问题,请看一下: Find number of concurrent users in a SQL records

我希望这也适用于Mysql。

答案 1 :(得分:1)

我看了similar question并没有看到一个简单的答案。基本上,您想知道每次呼叫开始时有多少呼叫。以下工作

create temporary table starts (call_started time);
insert into starts select distinct call_started from calls;

select starts.call_started, count(*)
  from starts, calls
  where starts.call_started >= calls.call_started and starts.call_started <= calls.call_ended
  group by starts.call_started
  order by count(*) desc;

如果您只想要最大负载,只需在最终查询中添加“LIMIT 1”即可。如果您想绘制结果图表,只需按开始时间排序。

答案 2 :(得分:0)

这不是最有效的方法,但这会给你每小时的计数(今天),包括在那个小时内开始和结束的所有通话。

select hour(call_start),count(*) from calls 
where call_end <= hour(call_start) and date(call_start) = date(now())
group by hour(call_start);