Note1 ‐ Estatisticas do CEP baseadas no DNE - AddressForAll/DCRPec GitHub Wiki

Perfil 1.1 - Quantidade esperada por comprimento do CEP

Um dígito decimal oferece 10 valores, pois ele pode assumir os valores 0, 1, 2, ... 9. Dois dígitos oferecem 10^2=100 valores... e assim por diante. Conforme analisamos a quantidade de CEPs existentes, ou quantidade de CEPs sob um prefixo de certo comprimento, teremos esse tipo de expectativa.

Como o CEP é fundamentado em contadores seriais, e passados mais de 30 anos esses contadores já foram usados,temos a expectativa natural de observar valores próximos desse máximo teórico. Por ser hierárquico, todavia, essa expectativa nem sempre é satisfeita. Aqui os resultados que descrevem esse "perfil de quantidades":

with t1 AS (
  select digits, substring(c.cep,1,digits) as prefix, count(*) n_cep, count(distinct cep5) as n_cep5
  from cep_tipologia c, generate_series(1,8) t(digits) group by 1,2 order by 1,2 
), t2 AS (
  SELECT digits, count(distinct prefix) as n_prefixes,
         PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY n_cep) AS median,
         round(avg(n_cep)) as avg,
         min(n_cep), max(n_cep), sum(1) as n_cep5 
  FROM t1 group by 1 order by 1
) SELECT  digits,
      n_prefixes::text ||' ('||round(100.0*n_prefixes/(10^digits))||'%)' as n_prefixes,
      median, avg, min, max, n_cep5
  FROM t2;
digits n_prefixes median avg min max n_cep5
1 10 (100%) 147142 160514 71978 353742 10
2 98 (98%) 13404 16379 1875 98126 98
3 878 (88%) 1232 1828 1 18518 878
4 6970 (70%) 79 230 1 4521 6970
5 28628 (29%) 21 56 1 837 28628
6 116364 (12%) 10 14 1 100 -
7 685570 (7%) 1 2 1 10 -
8 1605136 (2%) 1 1 1 1 -

Em todas as linhas podemos supor cep_tot=1605136 e cep5_tot=28628. Na tabela, o percentual de n_prefixes é relativo a 10^digits, ou seja, o aproveitamento máximo esperado com aquela quantidade de dígitos. Até digits=5 temos n_prefixes=n_cep5, conforme esperado. Com 4 e 5 dígitos a mediana é quase 1/3 da média, refletindo a herança histórica do CEP5.

O problema da hierarquia, associando logradouros ou regiões a intervalos numéricos (denominados "faixas de CEP"), é o baixo aproveitamento, acentuado a partir do 5 dígito. Nem todas as faixas conseguem fazer pleno uso da sua capacidade, gerando capacidade ociosa.

Perfil 1.2 - Tipos e sua distribuição

 WITH tot AS (
         SELECT count(*) AS t
           FROM cep_tipologia cep_tipologia_1
        )
 SELECT cep_tipologia.tipo_cep,
    count(*) AS n,
    round(100.0 * count(*)::numeric / tot.t::numeric, 1)::text || '%'::text AS percent
   FROM cep_tipologia,
    tot
  GROUP BY cep_tipologia.tipo_cep, tot.t
  ORDER BY cep_tipologia.tipo_cep;

Distribuição percentual conforme o total de 1605136 CEPs.

tipo_cep n percent
CAIXA_POSTAL 2055 0.1%
GRANDE_USUARIO 21761 1.4%
LOCALIDADE 9726 0.6%
LOGRADOURO-ABRANGENCIA_NUMERICA 91199 5.7%
LOGRADOURO-SECCIONADO_EXPLICITO 117174 7.3%
LOGRADOURO-SIMPLES 1349724 84.1%
UNIDADE_OPERACIONAL 13497 0.8%

Somando os 3 tipos de "CEP por LOGRADOURO", concluímos que 97,1% da base DNE é dedicada a essa categoria.

Perfil 1.3 - Municípios contemplados por CEP de logradouro

Estatística de "sem CEP de logradouro", supondo um mínimo de 20 CEPs por município.

SELECT avg(n_ceps), min(n_ceps) , count(*) nn 
FROM (
  SELECT municipio, count(*) n_ceps
  FROM (select distinct municipio, cep from cep_unificado) t
  GROUP BY 1 ORDER BY 1
) t2
WHERE n_ceps<20; -- nn=3775

Contagem exata, pela tipologia.

select count(distinct municipio) from (
  select u.municipio, t.tipo_cep, count(*)
  from cep_tipologia t inner join cep_unificado u on u.cep=t.cep
  where tipo_cep like 'LOGRADOURO%' group by 1,2 order by 1,2
) tt; -- 1496
select count(distinct municipio) from cep_unificado; -- 5297
select 5297-1496;  --     3801

Ou seja, a contagem bate com a estatística, não há indício de equivoco na contagem. Podemos hoje afirmar que são ~3800 municípios sem "CEP por logradouro". 97% dos dados do DNE são dedicados a apenas 28% dos municípios. Em termos de cobertura territorial a cobertura do CEP é baixa. Ela é boa para a cobetura populacional, pois a população se concentra em ~20% dos municípios.