怎么进一步筛选出来有imsi没有msisdn的用户
时间: 2024-09-27 20:04:53 浏览: 30
在你提供的SQL脚本的基础上,如果你想筛选出只有IMSI但没有MSISDN的用户,可以在计算比率的部分稍作调整。因为你想找到的是那些IMSI存在但MSISDN不存在的记录,所以你应该排除MSISDN非空的情况。可以修改如下:
```sql
sum(case when (imsi!='') and (msisdn IS NULL or msisdn='') then 1 else 0 end)*100.0/count(1) as imsi_without_msisdn
```
这里新增了一个条件 `(msisdn IS NULL or msisdn='')`,当MSISDN字段为空或者为NULL时,`case`内的表达式才会返回1,计入IMSI存在的统计。
完整的SQL查询可能如下:
```sql
SELECT 's1mme', COUNT(1), reportdate, reporthour, procedure_type,
sum(case when (msisdn != '') then 1 else 0 end) * 100.0 / COUNT(1) AS msisdn_ratio,
sum(case when (imsi != '') and (msisdn IS NULL or msisdn = '') then 1 else 0 end) * 100.0 / COUNT(1) AS imsi_without_msisdn
FROM fact_pscp_s1mme
WHERE reportdate = '2024-09-26'
AND reporthour = 8
AND procedure_type IN (1, 2, 3, 4, 5)
GROUP BY reportdate, reporthour, procedure_type
ORDER BY imsi_without_msisdn DESC;
```
这将返回每个报告日期、小时和类型下,只包含IMSI但没有MSISDN的用户百分比,并按照比例从高到低排序。
阅读全文