扫描当前时间到前两小时的话单数据。扫描时间范围内的数据,满足以下规则,即认为异常。 1)、时间范围内单次拨打电话通话时间过长监控:在扫描时间范围内,国际拨打的一通电话通话时长超过15分钟(可自行配置)分钟以上。 2)、时间范围内拨打同一个号码次数监控 在扫描时间范围内,同一个被叫国际号码总共被拨打的次数5次(可自行配置)以上。 3)、时间范围内拨打国际长途次数监控 在扫描时间范围内,号码总共拨打国际长途的次数10次(可自行配置)以上。异常信息也要显示,mysql具体实现
时间: 2024-04-01 11:36:23 浏览: 19
好的,我可以提供一个MySQL实现的思路:
1. 创建话单表,包含通话记录的时间、拨打号码、被叫号码、通话时长等字段。
```sql
CREATE TABLE call_records (
id INT AUTO_INCREMENT PRIMARY KEY,
call_time DATETIME,
call_from VARCHAR(20),
call_to VARCHAR(20),
call_duration INT
);
```
2. 编写查询语句,查询当前时间到前两小时的话单数据。
```sql
SELECT * FROM call_records WHERE call_time >= DATE_SUB(NOW(), INTERVAL 2 HOUR);
```
3. 对查询出来的数据进行处理,判断是否满足异常规则。可以使用MySQL的内置函数统计数据,例如COUNT、SUM等。
```sql
-- 单次拨打电话通话时间过长监控
SELECT call_from, call_to, call_duration FROM call_records
WHERE call_time >= DATE_SUB(NOW(), INTERVAL 2 HOUR)
AND call_duration > 900; -- 15分钟=900秒
-- 拨打同一个号码次数监控
SELECT call_from, call_to, COUNT(*) AS call_times FROM call_records
WHERE call_time >= DATE_SUB(NOW(), INTERVAL 2 HOUR)
GROUP BY call_from, call_to
HAVING call_times > 5;
-- 拨打国际长途次数监控
SELECT call_from, COUNT(*) AS intl_calls FROM call_records
WHERE call_time >= DATE_SUB(NOW(), INTERVAL 2 HOUR)
AND call_to LIKE '+%'
GROUP BY call_from
HAVING intl_calls > 10;
```
4. 将异常信息插入异常记录表。
```sql
CREATE TABLE call_exceptions (
id INT AUTO_INCREMENT PRIMARY KEY,
exception_time DATETIME,
call_from VARCHAR(20),
call_to VARCHAR(20),
exception_type VARCHAR(50)
);
-- 单次拨打电话通话时间过长异常记录
INSERT INTO call_exceptions (exception_time, call_from, call_to, exception_type)
SELECT NOW(), call_from, call_to, 'single call duration'
FROM call_records
WHERE call_time >= DATE_SUB(NOW(), INTERVAL 2 HOUR)
AND call_duration > 900;
-- 拨打同一个号码次数异常记录
INSERT INTO call_exceptions (exception_time, call_from, call_to, exception_type)
SELECT NOW(), call_from, call_to, 'same call number'
FROM call_records
WHERE call_time >= DATE_SUB(NOW(), INTERVAL 2 HOUR)
GROUP BY call_from, call_to
HAVING COUNT(*) > 5;
-- 拨打国际长途次数异常记录
INSERT INTO call_exceptions (exception_time, call_from, call_to, exception_type)
SELECT NOW(), call_from, NULL, 'intl call number'
FROM call_records
WHERE call_time >= DATE_SUB(NOW(), INTERVAL 2 HOUR)
AND call_to LIKE '+%'
GROUP BY call_from
HAVING COUNT(*) > 10;
```
以上是一个简单的MySQL实现思路,具体实现可以根据实际情况进行调整和优化。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)