SELECT * FROM fact_pscp_s1mme WHERE reportdate in ('2024-09-26') and reporthour in (8) AND imsi!='' AND msisdn='' ; 在此SQL明的基础之上,统计一下前top10
时间: 2024-09-27 20:05:23 浏览: 27
在这个SQL查询的基础上,如果你想要统计报告日期为2024年9月26日、报时为8点并且既没有IMSI也没有MSISDN的数据,你可以先筛选出这些记录,然后再进行计数并取前10条。但是由于MySQL默认不会对结果集进行排名,你需要借助子查询或者窗口函数来完成前10个记录的筛选。以下是修改后的SQL语句示例:
```sql
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) as row_num
FROM fact_pscp_s1mme
WHERE reportdate = '2024-09-26'
AND reporthour = 8
AND imsi != ''
AND msisdn = ''
) ranked_data
WHERE row_num <= 10
ORDER BY row_num;
```
这个查询首先通过嵌套查询筛选出符合条件的数据,然后利用`ROW_NUMBER()`窗口函数给结果按行计数降序排列,最后外层查询只选择`row_num`小于等于10的结果。这样就会得到报告日期、报时以及既无IMSI也无MSISDN的前10条记录。
相关问题
怎么进一步筛选出来有imsi没有msisdn的用户
在你提供的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的用户百分比,并按照比例从高到低排序。
linux pscp -h
pscp 是 PuTTY 的一个工具,用于在 Windows 和 Linux 之间传输文件。-h 选项用于显示 pscp 的帮助信息。具体用法如下:
pscp [-v | -q] [-h] [-P port] [-pw passw] [-p] [-i keyfile]
[-m file] [-sftp | -scp] [-batch] [-C] [-4 | -6]
[user@]host:source [user@]host:target
pscp [-v | -q] [-h] [-P port] [-pw passw] [-p] [-i keyfile]
[-m file] [-sftp | -scp] [-batch] [-C] [-4 | -6]
source [source...] [user@]host:target
其中,-v 表示详细输出信息,-q 表示不输出信息;-P 指定端口号;-pw 指定密码;-p 表示保留源文件的时间戳和权限;i 指定私钥文件;-m 指定包含要传输的文件列表的文件;-sftp 表示使用 SFTP 协议传输文件,-scp 表示使用 SCP 协议传输文件;-batch 表示不询问任何问题;-C 表示启用压缩;-4 表示使用 IPv4,-6 表示使用 IPv6。
阅读全文