自动化任务扫描,扫描时间范围是当前时间到前两个小时,扫描规则是,一通电话通话时间15分钟以上或拨打次数5次以上或总共拨打次数10次以上,满足其中一条规则就要把数据筛选出来,mysql如何实现
时间: 2024-03-14 16:45:14 浏览: 21
可以通过以下SQL语句实现:
```
SELECT *
FROM tasks
WHERE (call_duration >= 900 OR call_count >= 5 OR total_call_count >= 10)
AND create_time BETWEEN DATE_SUB(NOW(), INTERVAL 2 HOUR) AND NOW();
```
其中,`tasks` 表是需要扫描的任务表,包含了任务的信息,如拨打电话的次数、通话时长、创建时间等字段。`call_duration` 表示通话时长,单位为秒;`call_count` 表示拨打电话的次数;`total_call_count` 表示总共拨打电话的次数。`create_time` 表示任务的创建时间。
该 SQL 语句的逻辑是,首先筛选出满足任意一条规则的记录,即通话时间大于等于15分钟、拨打次数大于等于5次或总共拨打次数大于等于10次的记录。然后,再筛选出创建时间在当前时间到前两个小时之间的记录。最终,返回满足条件的所有记录。
需要注意的是,该 SQL 语句仅供参考,具体实现需要根据数据表的具体情况进行调整。
相关问题
扫描当前时间到前两小时的话单数据。扫描时间范围内的数据,满足以下规则,即认为异常。 1)、时间范围内单次拨打电话通话时间过长监控:在扫描时间范围内,国际拨打的一通电话通话时长超过15分钟(可自行配置)分钟以上。 2)、时间范围内拨打同一个号码次数监控 在扫描时间范围内,同一个被叫国际号码总共被拨打的次数5次(可自行配置)以上。 3)、时间范围内拨打国际长途次数监控 在扫描时间范围内,号码总共拨打国际长途的次数10次(可自行配置)以上。异常信息也要显示,mysql实现
好的,您的问题是如何实现扫描当前时间到前两小时的话单数据,并监控异常情况。这可以通过MySQL来实现。具体步骤如下:
1. 创建一个话单表,记录每个通话记录的时间、拨打号码、被叫号码、通话时长等信息。
2. 编写一个脚本,在脚本中使用MySQL的查询语句,查询当前时间到前两小时的话单数据。查询语句可以类似于下面的语句:
```sql
SELECT * FROM call_records WHERE call_time >= DATE_SUB(NOW(), INTERVAL 2 HOUR);
```
3. 对查询出来的数据进行处理,判断每个通话记录是否满足异常规则。具体判断规则如下:
- 单次拨打电话通话时间过长监控:判断通话时长是否超过15分钟。
- 拨打同一个号码次数监控:统计被叫号码出现的次数,如果超过5次,则认为异常。
- 拨打国际长途次数监控:统计号码拨打国际长途的次数,如果超过10次,则认为异常。
4. 将异常记录插入到另一个异常记录表中,记录异常的时间、拨打号码、被叫号码、异常类型等信息。
以上就是实现扫描话单数据并监控异常情况的基本步骤,具体实现可以根据实际情况进行调整和优化。
扫描当前时间到前两小时的话单数据。扫描范围内的数据,满足以下规则,即认为异常。 1)、时间范围内连续拨打同一号码监控 在扫描时间范围内,同一个国际被叫号码连续拨打5(可自行配置)次以上。 2)、时间范围内单次拨打电话通话时间过长监控 在扫描时间范围内,国际拨打的一通电话通话时长超过15分钟(可自行配置)分钟以上。 3)、时间范围内拨打同一个号码次数监控 在扫描时间范围内,同一个被叫国际号码总共被拨打的次数5次(可自行配置)以上。 4)、时间范围内拨打国际长途次数监控 在扫描时间范围内,号码总共拨打国际长途的次数10次(可自行配置)以上。mysql实现
可以使用MySQL的查询语句来实现对话单数据的扫描和监控,下面是一个可能的实现方案:
```
SELECT caller_number, called_number, call_start_time, call_end_time, call_duration
FROM call_records
WHERE call_start_time >= DATE_SUB(NOW(), INTERVAL 2 HOUR)
AND (
-- 规则1:连续拨打同一号码监控
(caller_number, called_number) IN (
SELECT caller_number, called_number
FROM (
SELECT caller_number, called_number, call_start_time,
IF(called_number=@prev_called_number, @cnt:=@cnt+1, @cnt:=1) AS cnt,
@prev_called_number:=called_number
FROM call_records, (SELECT @prev_called_number:=NULL, @cnt:=1) AS vars
WHERE call_start_time >= DATE_SUB(NOW(), INTERVAL 2 HOUR)
AND caller_number NOT LIKE '0%'
ORDER BY called_number, call_start_time
) AS t
WHERE cnt >= 5
)
OR
-- 规则2:单次拨打电话通话时间过长监控
(call_duration >= 900)
OR
-- 规则3:拨打同一个号码次数监控
(called_number IN (
SELECT called_number
FROM call_records
WHERE call_start_time >= DATE_SUB(NOW(), INTERVAL 2 HOUR)
AND caller_number NOT LIKE '0%'
GROUP BY called_number
HAVING COUNT(DISTINCT caller_number) >= 5
))
OR
-- 规则4:拨打国际长途次数监控
(caller_number NOT LIKE '0%' AND LENGTH(caller_number) > 5 AND LENGTH(caller_number) < 16 AND LENGTH(called_number) > 5 AND LENGTH(called_number) < 16
AND (SELECT COUNT(*) FROM call_records WHERE caller_number=cr.caller_number AND called_number=cr.called_number AND call_start_time >= DATE_SUB(NOW(), INTERVAL 2 HOUR)) >= 10)
)
```
这个查询语句会返回扫描时间范围内满足监控规则的通话记录,其中包含主叫号码、被叫号码、通话开始时间、通话结束时间和通话时长等信息。你可以根据实际需要对查询语句进行修改和优化。