数据库两张表,一张basebill(话单表),一张billdetails(话单明细表),basebill表中有主叫号码,被叫号码,通话时长,话单类型(主叫被叫),billdetails表中有号码是否是属于国际通话字段,除了86以外的通话,其余均属于国际通话,以这两张表为主,筛选国际主叫号码,扫描当前时间到前两小时的话单数据。扫描范围内的数据,满足以下规则,即认为异常。 1)、时间范围内单次拨打电话通话时间过长监控 在扫描时间范围内,国际拨打的一通电话通话时长超过15分钟分钟以上。 2)、时间范围内拨打同一个号码次数监控 在扫描时间范围内,同一个被叫国际号码总共被拨打的次数5次以上。 3)、时间范围内拨打国际长途次数监控 在扫描时间范围内,号码总共拨打国际长途的次数10次以上。异常信息也要显示,mysql实现
时间: 2024-03-17 21:45:49 浏览: 186
以mysql为主,记录数据库的建表规范及优化方案等
您好,通过以下 SQL 语句可以实现您所描述的需求:
```
SELECT basebill.caller_number, billdetails.is_international, SUM(basebill.duration) AS total_duration, COUNT(DISTINCT basebill.called_number) AS distinct_called_numbers, COUNT(*) AS total_calls
FROM basebill
JOIN billdetails ON basebill.called_number = billdetails.number
WHERE basebill.call_type = '主叫' AND billdetails.is_international = 1 AND basebill.start_time BETWEEN DATE_SUB(NOW(), INTERVAL 2 HOUR) AND NOW()
GROUP BY basebill.caller_number, billdetails.is_international
HAVING total_duration > 900 OR distinct_called_numbers > 4 OR total_calls > 9;
```
以上 SQL 语句将会查询在当前时间到前两小时内进行的国际主叫电话,筛选条件包括:单次通话时间超过15分钟、同一被叫号码被拨打5次以上、总共拨打国际长途次数超过10次。查询结果将会返回主叫号码、是否是国际通话、总通话时长、被叫号码数、总通话次数等信息,您可以根据需要自行调整查询结果的显示内容。
阅读全文