现有表A里有不同部门编号,身份证号
现我想求写一个SQL语句实现求出
部门 身份证前六位 身份证前六位相同人数 部门总人数 身份证前六位相同人数/部门总人数的比例
怎么用SQL语句实现
麻烦大家了又
我就觉得奇怪了,为什么别人的答案都是限定前6位再统计,那有个啥意义啊,这当然是截取前6位来group by 啊
---测试表
create table test_20220302 (部门编号 varchar2(10),身份证号 varchar2(10));
---查询sql
select 部门编号,
substr(身份证号, 1, 6) 身份证前六位,
count(1) 身份证前六位相同人数,
count(1) over(partition by 部门编号) 部门总人数,
substr(身份证号, 1, 6) / (count(1) over(partition by 部门编号)) 占比
from test_20220302
group by 部门编号, substr(身份证号, 1, 6)
;
select deptName,name,cardid,count(cardid) as cardid
from table
where cardid like '123456%'
group by deptName,name,cardid