如下簡化后的數據表。 該表記錄了每個商戶的注冊用戶。 正常情況下,一個手機號不會被多個用戶使用。由於歷史原因,表里出現了這樣的“一個手機號被多人使用”的數據。
✅ 現在要統計每個商戶下,有多少手機號是重復的。手機號重復的定義是:手機號重復,姓名,身份證號不同叫手機號重復。
SELECT mer_id, count(1) from ( select mer_id,mobile,count(distinct name||idno) from ( select 1 as mer_id,'13201010101' as mobile,'zhangsan' as name,'130434198801258888' as idno from dual union all select 1,'13312345678' , 'zhangsan', '130434198801258888' from dual union all select 1,'13201010101' , 'lisi', '120115198801256666' from dual union all select 1,'15688880000' , 'maliu', '31010419001020751X' from dual union all select 1,'18787654321' , 'maliu', '31010419001020751X' from dual union all select 1,'13312345678' , 'wangwu', '11011520101020118X' from dual union all select 1,'18787654321' , 'wangwu', '11011520101020118X' from dual union all select 2,'13312345678' , 'wangwu', '11011520101020118X' from dual union all select 2,'13312345678' , 'maliu', '31010419001020751X' from dual ) a group by mer_id,mobile HAVING count(distinct name||idno)>1 ) a group by mer_id;
結果:
✅ 全局統計,有多少手機號是重復的,不區分商戶。
SELECT count(1) from ( select mobile,count(distinct name||idno) from ( select 1 as mer_id,'13201010101' as mobile,'zhangsan' as name,'130434198801258888' as idno from dual union all select 1,'13312345678' , 'zhangsan', '130434198801258888' from dual union all select 1,'13201010101' , 'lisi', '120115198801256666' from dual union all select 1,'15688880000' , 'maliu', '31010419001020751X' from dual union all select 1,'18787654321' , 'maliu', '31010419001020751X' from dual union all select 1,'13312345678' , 'wangwu', '11011520101020118X' from dual union all select 1,'18787654321' , 'wangwu', '11011520101020118X' from dual union all select 2,'13312345678' , 'wangwu', '11011520101020118X' from dual union all select 2,'13312345678' , 'maliu', '31010419001020751X' from dual ) a group by mobile HAVING count(distinct name||idno)>1 ) a
結果: