关于#SQL#的问题,如何解决?

现有表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