通過身份證號碼特定編碼進行多樣化統計分析

2021-09-24 17:34:01 字數 3207 閱讀 2841

構成

位址碼(身份證前六位)表示編碼物件常住戶口所在縣(市、旗、區)的行政區劃**。

生日期碼

(身份證第七位到第十四位)表示編碼物件出生的年、月、日,其中年份用四位數字表示,年、月、日之間不用分隔符。例如:2023年05月11日就用19810511表示。

順序碼(身份證第十五位到十七位)為同一位址碼所標識的區域範圍內,對同年、月、日出生的人員編定的順序號。其中第十七位奇數分給男性,偶數分給女性。

校驗碼(身份證最後一位)是根據前面十七位數字碼,按照iso 7064:1983.mod 11-2校驗碼計算出來的檢驗碼。作為尾號的校驗碼,是由號碼編制單位按統一的公式計算出來的,如果某人的尾號是0-9,都不會出現x,但如果尾號是10,那麼就得用x來代替,因為如果用10做尾號,那麼此人的身份證就變成了19位,而19位的號碼違反了國家標準,並且我國的計算機應用系統也不承認19位的身份證號碼。ⅹ是羅馬數字的10,用x來代替10,可以保證公民的身份證符合國家標準。

1.抓取固定區域的相關資訊

select sum(loan_amount), count(*)

from table_loan a

where substr(a.national_id,1,6)='500106'   ---重慶市沙坪壩區身份證統一編碼號

備註:通過身份證號碼的特定編碼可以進行特定省市區的人群分布統計,年齡、性別等

2.通過身份證計算年齡、性別

select

mod(substring(national_id, 17, 1), 2) as gender,

floor(datediff(date_format(now(),'%y%m%d'),substring(national_id,7,8))/365) user_age

from table_userinfo

3.計算各地區申請量佔比

4.身份證號碼戶籍地對映

select 

replace(b.mobile,substr(b.mobile,4,4),'***x') as hide_mobile,      ###隱藏**號碼中間四位數

case when substr(a1.national_id,1,2)='11' then '北京'

when substr(a1.national_id,1,2)='12' then '天津'

when substr(a1.national_id,1,2)='13' then '河北'

when substr(a1.national_id,1,2)='14' then '山西'

when substr(a1.national_id,1,2)='15' then '內蒙古'

when substr(a1.national_id,1,2)='21' then '遼寧'

when substr(a1.national_id,1,2)='22' then '吉林'

when substr(a1.national_id,1,2)='23' then '黑龍江'

when substr(a1.national_id,1,2)='31' then '上海'

when substr(a1.national_id,1,2)='32' then '江蘇'

when substr(a1.national_id,1,2)='33' then '浙江'

when substr(a1.national_id,1,2)='34' then '安徽'

when substr(a1.national_id,1,2)='35' then '福建'

when substr(a1.national_id,1,2)='36' then '江西'

when substr(a1.national_id,1,2)='37' then '山東'

when substr(a1.national_id,1,2)='41' then '河南'

when substr(a1.national_id,1,2)='42' then '湖北'

when substr(a1.national_id,1,2)='43' then '湖南'

when substr(a1.national_id,1,2)='44' then '廣東'

when substr(a1.national_id,1,2)='45' then '廣西'

when substr(a1.national_id,1,2)='46' then '海南'

when substr(a1.national_id,1,2)='50' then '重慶'

when substr(a1.national_id,1,2)='51' then '四川'

when substr(a1.national_id,1,2)='52' then '貴州'

when substr(a1.national_id,1,2)='53' then '雲南'

when substr(a1.national_id,1,2)='54' then '**'

when substr(a1.national_id,1,2)='61' then '陝西'

when substr(a1.national_id,1,2)='62' then '甘肅'

when substr(a1.national_id,1,2)='63' then '青海'

when substr(a1.national_id,1,2)='64' then '寧夏'

when substr(a1.national_id,1,2)='65' then '新疆'

when substr(a1.national_id,1,2)='886' or substr(a1.national_id,1,2)='71' then '台灣'

when substr(a1.national_id,1,2)='852' or substr(a1.national_id,1,2)='81' then '香港'

when substr(a1.national_id,1,2)='853' or substr(a1.national_id,1,2)='82' then '澳門' end as res_address

from

table_name a1

身份證號碼編碼

身份證號碼編碼 教學設計 身份證為18位,老的身份證是15位就不說了。關於身份證第18是怎麼計算的,原理如下 根據 中華人民共和國國家標準gb11643 1999 中有關公民身份號碼的規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為 六位數字位址碼,八位...

身份證號碼

每乙個人自出生後都會有乙個身份證號碼。根據我國有關部門規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為 六位數字位址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。居民身份證是國家法定的證明公民個人身份的有效證件。例如 對於身份證號碼330719...

身份證號碼驗證

說明 驗證身份證的有效性 引數 cid 身份證號碼 返回 地方 出生時間 性別 private string checkcidinfo string cid if cid.length 18 char c cid cid.length 1 bool last false if c 0 c 9 c a...