Skip to content

2019_09 Actualización a Divipola 2018

Vladimir Támara Patiño edited this page Sep 3, 2020 · 1 revision

Describimos a nivel técnico como se realizó la actualización de datos de SIP a los del DIVIPOLA 2018, mediante la creación de una migración (db/migrate/20190331111015_actualiza_divipola_2018).

Puede consultar un resumen ejecutivo menos técnico en https://github.com/pasosdeJesus/sivel2/wiki/Resumen-ejecutivo-de-la-actualizaci%C3%B3n-a-DIVIPOLA-2018

1. Fuente de datos

Se descargó de https://geoportal.dane.gov.co/metadatos/historicos/archivos/Listado_2018.xls

Se hizo copia de lo descargado en: https://danzadoresdejesucristo.onlyoffice.com/products/files/doceditor.aspx?fileid=6068570&action=view&doc=WWNOSk1PeXpYVVpOUWhNaVMxUUJsUk9WTzkwV0NUMWpxWjV1VFpCUlpqUT0_IjYwNjg1NzAi0

Se trata de 8016 centros poblados organizados en columnas:

  • Código del departamento
  • Código del municipio
  • Código del centro poblado
  • Nombre del Departamento (mayúsculas y minúsculas)
  • Nombre del municipio (mayúsculas)
  • Nombre del centro poblado (mayúsculas)
  • Sigla del tipo de centro poblado

2. Corrección inicial

Nos preguntamos diferencia entre el uso de paréntesis y guiones en los nombres de municipios y de centros poblados. Asumimos que paréntesis se usan para añadir nombres anteriores de un municipio/centro poblado y que se usan guiones cuando una de estas ubicaciones se conoce con varios nombres.

Se convirtieron a CSV

Se buscaron algunos patrones que revelaron lo que consideramos 138 errores de digitación que detallamos en http://bit.ly/2OwFi9M dividos así:

  • Espacios faltantes o sobrantes antes y después de paréntesis
  • Espacios faltantes o sobrantes antes y después de guion
  • Consistencia plural
  • Punto final sobrante
  • Confundir letras (N con M y Ñ con N).
  • Tildes (incluyendo departamento Quindío sin tilde).

Algunos se modificaron en el CSV y otros en la migración.

3. Importación y preparación

El CSV se importó a una base de datos de sip así:

CREATE TABLE divipola_oficial_2018_corregido (
        coddep VARCHAR(2),
        codmun VARCHAR(5),
        codcp VARCHAR(8),
        departamento VARCHAR(512) COLLATE es_co_utf_8,
        municipio VARCHAR(512) COLLATE es_co_utf_8,
        centropoblado VARCHAR(512) COLLATE es_co_utf_8,
        tipocp VARCHAR(6)
);

COPY divipola_oficial_2018_corregido FROM 'Listado_2018_corregido.csv' DELIMITER ',' CSV HEADER;

Que da una cuenta de 8016 registros.

Se hizo la vista:

CREATE OR REPLACE VIEW divipola_sip AS (SELECT
  SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) AS coddep,
  sip_departamento.nombre AS departamento,
  SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) ||
  SUBSTRING(TO_CHAR(sip_municipio.id_munlocal,'000') FROM 2) AS codmun,
  sip_municipio.nombre AS municipio,
  SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) ||
  SUBSTRING(TO_CHAR(sip_municipio.id_munlocal,'000') FROM 2) ||
  SUBSTRING(TO_CHAR(sip_clase.id_clalocal,'000') FROM 2) AS codcp,
  sip_clase.nombre AS  centropoblado,
  sip_clase.id_tclase AS tipocp,
  sip_clase.id AS sip_idcp
  FROM
  sip_departamento
  JOIN sip_municipio ON sip_municipio.id_departamento=sip_departamento.id
  JOIN sip_clase ON sip_clase.id_municipio=sip_municipio.id
  WHERE
  sip_departamento.id_pais=170
  AND sip_clase.fechadeshabilitacion IS NULL
  ORDER BY 2, 4, 6 );

Esta daba una cuenta de 9191 registros.

4. Comparación de departamentos con los de sip

En ambos se contaron 33 departamentos:

SELECT COUNT(DISTINCT coddep) FROM divipola_oficial_2018_corregido ;
SELECT COUNT(DISTINCT coddep) FROM divipola_sip;

Se constató que los códigos eran iguales:

SELECT s.coddep FROM divipola_sip AS s 
  WHERE s.coddep NOT IN (SELECT DISTINCT coddep FROM divipola_oficial_2018_corregido as d);

SELECT d.coddep FROM divipola_oficial_2018_corregido AS d   
  WHERE d.coddep NOT IN (SELECT DISTINCT coddep FROM divipola_sip as s);

Se compararon nombres (pasando a mayúsculas):

SELECT DISTINCT s.coddep,s.departamento,d.departamento FROM divipola_sip AS s 
  JOIN divipola_oficial_2018_corregido as d
  ON s.coddep=d.coddep
  WHERE s.departamento<>UPPER(d.departamento)
;

La única diferencia con el DIVIPOLA oficial era falta de tilde en este en el departamento Quindío.

5. Comparación de municipios con los de sip

En ambos se contaron 1122 municipios:

SELECT COUNT(DISTINCT codmun) FROM divipola_oficial_2018_corregido ;
SELECT COUNT(DISTINCT codmun) FROM divipola_sip;

Se constató que no había diferencia entre los códigos de municipios:

SELECT s.codmun FROM divipola_sip AS s
  WHERE s.codmun NOT IN (
        SELECT DISTINCT codmun
        FROM divipola_oficial_2018_corregido as d
);

SELECT d.codmun FROM divipola_oficial_2018_corregido AS d
  WHERE d.codmun NOT IN (
        SELECT DISTINCT codmun
        FROM divipola_sip as s
);

Se encontraron diferencias en el nombre de 6 municipios:

SELECT DISTINCT s.codmun,s.municipio,d.municipio FROM divipola_sip AS s
  JOIN divipola_oficial_2018_corregido as d
  ON s.codmun=d.codmun
  WHERE s.municipio<>d.municipio
;

Que eran

codmun sip divipola 2018
73055 ARMERO GUAYABAL ARMERO
97777 PAPUNAUA PAPUNAHUA
52203 COLON (GENOVA) COLÓN
13468 MOMPÓS SANTA CRUZ DE MOMPÓX
19548 PIENDAMÓ PIENDAMÓ - TUNÍA
54001 CÚCUTA SAN JOSÉ DE CÚCUTA

Se preparó corrección en sip (que dejó 2 diferencias en todo caso pero preferimos mantenerlas para ubicar a usuarios) y se añadió a la migración para quedar:

codmun sip divipola 2018 sip 2019
73055 ARMERO GUAYABAL ARMERO ARMERO (ARMERO GUAYABAL)
97777 PAPUNAUA PAPUNAHUA PAPUNAHUA
52203 COLON (GENOVA) COLÓN COLÓN
13468 MOMPÓS SANTA CRUZ DE MOMPÓX SANTA CRUZ DE MOMPÓX (MOMPÓS)
19548 PIENDAMÓ PIENDAMÓ - TUNÍA PIENDAMÓ - TUNÍA
54001 CÚCUTA SAN JOSÉ DE CÚCUTA SAN JOSÉ DE CÚCUTA

6. Comparación de centros poblados con los de sip

  • En sip se cuentan 9191
SELECT COUNT(DISTINCT codcp) FROM divipola_sip;
  • Divipola cuenta 8016
SELECT COUNT(DISTINCT codcp) FROM divipola_oficial_2018_corregido ;

6.1 Centros poblados que se sacaron de DIVIPOLA 2018 respecto a los que tenía sip

Ubicamos los que están en sip pero no en DIVIPOLA 2018:

SELECT s.codcp, s.centropoblado FROM divipola_sip AS s
  WHERE s.codcp NOT IN (
        SELECT DISTINCT codcp
        FROM divipola_oficial_2018_corregido as d
) ORDER BY 1;

Dan 2584 registros comenzando con 05001005 PEDREGAL ALTO y terminando con 99773023 WERIMA. Estos dos centros poblados se encuentean en el DIVIPOLA 2012 (disponible en https://geoportal.dane.gov.co/metadatos/historicos/archivos/Listado_2012.xls o en la copia que se hizo del mismo http://bit.ly/2FNDqac ).

Para actualizar información se realiza la consulta:

SELECT 'UPDATE sip_clase SET observaciones=observaciones || ''  No está en DIVIPOLA 2018.'',' || 
'  fechadeshabilitacion=''2019-03-31'' ' ||
'  WHERE id=''' || sip_idcp || '''; -- ' || s.codcp || ' ' || s.centropoblado 
FROM divipola_sip AS s
  WHERE s.codcp NOT IN (
        SELECT DISTINCT codcp
        FROM divipola_oficial_2018_corregido as d
) ORDER BY s.codcp;

la cual comienza con:

UPDATE sip_clase SET observaciones=observaciones || '  No está en DIVIPOLA 2018.',  fechadeshabilitacion='2019-03-31'   WHERE id='6480'; -- 05001005 PEDREGAL ALTO

y termina con

 UPDATE sip_clase SET observaciones=observaciones || '  No está en DIVIPOLA 2018.',  fechadeshabilitacion='2019-03-31'   WHERE id='13167'; -- 99773023 WERIMA

Con \copy este resultado se envía a un archivo en el sistema de archivo para posteriormente agregarlo a la migración.

6.2 Centros poblados que se agregaron respecto a los conocidos por sip

Son 1409 nuevos o que se volvieron a habilitar

SELECT d.codcp, d.centropoblado FROM divipola_oficial_2018_corregido AS d
  WHERE d.codcp NOT IN (
        SELECT DISTINCT codcp
        FROM divipola_sip as s
) ORDER BY codcp;

De estos identificamos 200 códigos que estaban deshabilitados en sip y volvieron a habilitarse en DIVIPOLA 2018:

SELECT d.codcp, d.centropoblado, cd.centropoblado FROM divipola_oficial_2018_corregido AS d
  JOIN (
    SELECT DISTINCT SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) ||
      SUBSTRING(TO_CHAR(sip_municipio.id_munlocal,'000') FROM 2) ||  
      SUBSTRING(TO_CHAR(sip_clase.id_clalocal,'000') FROM 2) AS codcp,
      sip_clase.nombre AS centropoblado
    FROM sip_departamento
      JOIN sip_municipio ON sip_municipio.id_departamento=sip_departamento.id
      JOIN sip_clase ON sip_clase.id_municipio=sip_municipio.id
    WHERE
      sip_departamento.id_pais=170
      AND sip_clase.fechadeshabilitacion IS NOT NULL
  ) AS cd ON d.codcp=cd.codcp ORDER BY d.codcp;

De esos 200 tenían el mismo nombre 131:

SELECT d.codcp, d.centropoblado, cd.centropoblado FROM divipola_oficial_2018_corregido AS d
  JOIN (
    SELECT DISTINCT SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) ||
      SUBSTRING(TO_CHAR(sip_municipio.id_munlocal,'000') FROM 2) ||  
      SUBSTRING(TO_CHAR(sip_clase.id_clalocal,'000') FROM 2) AS codcp,
      sip_clase.nombre AS centropoblado
    FROM sip_departamento
      JOIN sip_municipio ON sip_municipio.id_departamento=sip_departamento.id
      JOIN sip_clase ON sip_clase.id_municipio=sip_municipio.id
    WHERE
      sip_departamento.id_pais=170
      AND sip_clase.fechadeshabilitacion IS NOT NULL
  ) AS cd ON d.codcp=cd.codcp 
  WHERE d.centropoblado=cd.centropoblado
  ORDER BY d.codcp;

comenzando por

 05030004 | LA FERREIRA          | LA FERREIRA

y terminando en

99001006 | GUARIPA              | GUARIPA

que se preparan para habilitar con:

SELECT 'UPDATE sip_clase SET fechadeshabilitacion=NULL,' || 
  ' observaciones=observaciones || ''  Rehabilitado por DIVIPOLA 2018 el 2019-03-31.''' ||
  ' WHERE id=''' || cd.sip_idcp || '''; -- ' || d.codcp || ' ' || d.centropoblado 
FROM divipola_oficial_2018_corregido AS d
  JOIN (
    SELECT DISTINCT SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) ||
      SUBSTRING(TO_CHAR(sip_municipio.id_munlocal,'000') FROM 2) ||  
      SUBSTRING(TO_CHAR(sip_clase.id_clalocal,'000') FROM 2) AS codcp,
      sip_clase.nombre AS centropoblado,
      sip_clase.id AS sip_idcp
    FROM sip_departamento
      JOIN sip_municipio ON sip_municipio.id_departamento=sip_departamento.id
      JOIN sip_clase ON sip_clase.id_municipio=sip_municipio.id
    WHERE
      sip_departamento.id_pais=170
      AND sip_clase.fechadeshabilitacion IS NOT NULL
  ) AS cd ON d.codcp=cd.codcp 
  WHERE d.centropoblado=cd.centropoblado
  ORDER BY d.codcp;

Los otros 69 se habilitan y se les actualiza nombre después de verificar:

SELECT 'UPDATE sip_clase SET fechadeshabilitacion=NULL, nombre=''' || d.centropoblado || ''', ' || 
  ' observaciones=observaciones || ''  Rehabilitado por DIVIPOLA 2018 el 2019-03-31, nombre anterior: ' ||
  cd.centropoblado || '.''' ||
  ' WHERE id=''' || cd.sip_idcp || '''; -- ' || d.codcp
FROM divipola_oficial_2018_corregido AS d
  JOIN (
    SELECT DISTINCT SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) ||
      SUBSTRING(TO_CHAR(sip_municipio.id_munlocal,'000') FROM 2) ||  
      SUBSTRING(TO_CHAR(sip_clase.id_clalocal,'000') FROM 2) AS codcp,
      sip_clase.nombre AS centropoblado,
      sip_clase.id AS sip_idcp
    FROM sip_departamento
      JOIN sip_municipio ON sip_municipio.id_departamento=sip_departamento.id
      JOIN sip_clase ON sip_clase.id_municipio=sip_municipio.id
    WHERE
      sip_departamento.id_pais=170
      AND sip_clase.fechadeshabilitacion IS NOT NULL
  ) AS cd ON d.codcp=cd.codcp
  WHERE d.centropoblado<>cd.centropoblado
  ORDER BY d.codcp;

Finalmente los 1209 restantes deben insertarse:

SELECT 'INSERT INTO sip_clase (id, id_municipio, id_clalocal, ' || 
  'nombre, id_tclase, observaciones, ' || 
  'fechacreacion, created_at, updated_at) ' ||
  'VALUES (' || 14000+row_number() over (order by d.codcp) || ', ' || m.id::TEXT || ', ''' || d.codcp || ''', ''' ||
  d.centropoblado  || ''', ''' || UPPER(d.tipocp) || ''', ' ||  '''Aparece en DIVIPOLA 2018.'', ' ||
  '''2019-03-31'', ''2019-03-31'', ''2019-03-31'');' 
  FROM divipola_oficial_2018_corregido AS d 
  JOIN sip_departamento AS dep ON
    d.coddep::numeric = dep.id_deplocal
    AND id_pais = 170
  JOIN sip_municipio AS m ON
    dep.id = m.id_departamento AND (d.coddep ||
      SUBSTRING(TO_CHAR(m.id_munlocal,'000') FROM 2)) = d.codmun  
  WHERE d.codcp NOT IN (SELECT codcp FROM divipola_sip  UNION
  SELECT DISTINCT SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) ||
      SUBSTRING(TO_CHAR(sip_municipio.id_munlocal,'000') FROM 2) ||  
      SUBSTRING(TO_CHAR(sip_clase.id_clalocal,'000') FROM 2) AS codcp
    FROM sip_departamento
      JOIN sip_municipio ON sip_municipio.id_departamento=sip_departamento.id
      JOIN sip_clase ON sip_clase.id_municipio=sip_municipio.id
    WHERE
      sip_departamento.id_pais=170
      AND sip_clase.fechadeshabilitacion IS NOT NULL
  )
  ORDER BY d.codcp;

6.3 Diferencias en centro poblados con códigos comunes

Se encuentran 370 diferencias que se revisaron y en general se actualizan.

SELECT s.sip_idcp, s.codcp, s.centropoblado, d.centropoblado FROM 
  divipola_sip AS s JOIN divipola_oficial_2018_corregido AS d 
  ON s.codcp=d.codcp
  WHERE s.centropoblado != d.centropoblado
  ORDER BY s.codcp
;

Las excepciones siguientes se dejan teniendo en cuenta:

  • Si hay error ortográfico evidente
  • Si el nombre cambia de manera sustancial, pusimos le nombre antiguo entre paréntesis:
Código Nombre DIVIPOLA Nuevo nombre SIP
05042002 LAURELES LAURELES (GUASABRA)
05129001 EL CANO EL CAÑO
05376005 SAN NICOLÁS SAN NICOLÁS (VUELTECITAS)
05615017 LA MOSCA LA MOSCA (LA PLAYA)
05837009 BOCAS DEL RIO ATRATO BOCAS DEL RíO ATRATO
05893000 YONDÓ YONDÓ (CASABE)
13468000 SANTA CRUZ DE MOMPÓX, DISTRITO ESPECIAL, TURÍSTICO, CULTURAL E HISTÓRICO SANTA CRUZ DE MOMPÓX, DISTRITO ESPECIAL, TURÍSTICO, CULTURAL E HISTÓRICO (MOMPÓS)
91001026 COMUNIDAD IMDIGENA PUERTO TRIUNFO
05040002 LIBERIA LIBERIA (CHARCON)
05120010 PIAMONTE PIAMONTE (SAN RAFAEL)
05234004 SAN JOSÉ DE URAMA SAN JOSÉ DE URAMA (URAMAGRANDE)
05376005 SAN NICOLÁS SAN NICOLÁS (VUELTECITAS)
05483001 PUERTO VENUS PUERTO VENUS (SAMANÁ)
15232000 SAN PEDRO DE IGUAQUE SAN PEDRO DE IGUAQUE (CHÍQUIZA)
15232001 CHÍQUIZA CHÍQUIZA (SAN PEDRO DE IGUAQUE)
17013010 EDEN EDÉN
19256029 FONDAS FONDAS (VILLA AL MAR)
20570003 NUEVO COLON NUEVO COLÓN (PALMARITO)
25126004 RIO GRANDE RÍO GRANDE (BARRO BLANCO)
25126006 LOS SERENEOS LOS SERENEOS (CHUNTAME)
25817008 ANTONIA SANTOS ANTONIA SATNOS (LA ESTACIÓN)
27025031 PUERTO MARTÍNEZ PUERTO MARTÍNEZ (BAGRERA)
41551005 REGUEROS REGUEROS (PRADOS DEL NORTE)
47555021 CINCO Y SEIS CINCO y SEIS (EL BAJO)
50150002 PUEBLO VIEJO PUEBLO VIEJO (ARENALES)
52240003 CANO ALTO CAÑO ALTO
52250003 SAN PEDRO SAN PEDRO (BOLÍVAR)
54223004 TIERRA GRATA TIERRA GRATA (ROMÁN)
54250001 BELLA VISTA BELLA VISTA (NUEVA GRANADA)
54670004 VISTA HERMOSA VISTA HERMOSA (EL ESPEJO)
70678006 LOS ÁNGELES LOS ÁNGELES (CORRAL VIEJO)
76275024 EL INGENIO EL INGENIO (TARRAGONA PARTE ALTA)
76823008 LA QUIEBRA LA QUIEBRA (VENTAQUEMADA)
91001001 COMUNIDAD INDIGENA SANTA SOFIA COMUNIDAD INDÍGENA SANTA SOFIA
91001002 COMUNIDAD INDIGENA NAZARETH COMUNIDAD INDÍGENA NAZARETH
91001005 COMUNIDAD INDIGENA TIKUNA DE ARARA COMUNIDAD INDÍGENA TIKUNA DE ARARA
91001007 COMUNIDAD INDIGENA SAN MARTÍN DE AMACAYACÚ COMUNIDAD INDÍGENA SAN MARTÍN DE AMACAYACÚ
91001009 COMUNIDAD INDIGENA ZARAGOZA COMUNIDAD INDÍGENA ZARAGOZA
91001011 COMUNIDAD INDIGENA EL PROGRESO COMUNIDAD INDíGENA EL PROGRESO
91001012 COMUNIDAD INDIGENA EL VERGEL COMUNIDAD INDÍGENA EL VERGEL
91001013 COMUNIDAD INDIGENA PATIO DE CIENCIA DULCE KM 11 COMUNIDAD INDIGENA PATIO DE CIENCIA DULCE KM 11
91001015 COMUNIDAD INDIGENA LA LIBERTAD COMUNIDAD INDÍGENA LA LIBERTAD
91001016 COMUNIDAD INDIGENA LA MILAGROSA COMUNIDAD INDÍGENA LA MILAGROSA
91001017 COMUNIDAD INDIGENA SECTOR LA PLAYA COMUNIDAD INDÍGENA SECTOR LA PLAYA
91001018 COMUNIDAD INDIGENA MALOKA YAGUAS COMUNIDAD INDÍGENA MALOKA YAGUAS
91001019 COMUNIDAD INDIGENA LOMA LINDA COMUNIDAD INDÍGENA LOMA LINDA
91001020 COMUNIDAD INDIGENA MACEDONIA COMUNIDAD INDÍGENA MACEDONIA
91001021 COMUNIDAD INDIGENA MOCAGUA COMUNIDAD INDÍGENA MOCAGUA
91001022 COMUNIDAD INDIGENA JUSSY MONILLA AMENA COMUNIDAD INDÍGENA JUSSY MONILLA AMENA
91001023 ASENTAMIENTO HUMANO TAKANA KM 11 ASENTAMIENTO HUMANO TAKANA KM 11 (MULTIÉTNICA)
91001024 COMUNIDAD INDIGENA NUEVO JARDIN COMUNIDAD INDÍGENA NUEVO JARDIN 91001025
91001026 COMUNIDAD IMDIGENA PUERTO TRIUNFO COMUNIDAD INDÍGENA PUERTO TRIUNFO
91001027 COMUNIDAD INDIGENA ISLA DE RONDA COMUNIDAD INDÍGENA ISLA DE RONDA
91001028 COMUNIDAD INDIGENA SAN ANTONIO DE LOS LAGOS COMUNIDAD INDÍGENA SAN ANTONIO DE LOS LAGOS
94001009 RESGUARDO CACAHUAL RIO ATABAPO RESGUARDO CACAHUAL RIO ATABAPO (CHAQUITA)
94885000 GALILEA GALILEA (LA GUADALUPE)
97777000 PUERTO SOLANO (PAPUNAHUA) PUERTO SOLANO (PAPUNAHUA; MORICHAL)
SELECT 'UPDATE sip_clase SET nombre=''' || d.centropoblado || ''', observaciones=''Nombre cambiado por DIVIPOLA 2018. Antes era ' || s.centropoblado || '.'' WHERE id=''' || s.sip_idcp || '''; -- ' ||  s.codcp FROM 
  divipola_sip AS s JOIN divipola_oficial_2018_corregido AS d 
  ON s.codcp=d.codcp
  JOIN sip_clase AS sc ON sc.id=s.sip_idcp WHERE s.centropoblado != d.centropoblado
  AND observaciones is null ORDER BY s.codcp
;

6.4 Cambio en tipo de centro poblado

Se encuentran 1092 diferencias:

SELECT s.sip_idcp, s.codcp, s.tipocp, d.tipocp FROM 
  divipola_sip AS s JOIN divipola_oficial_2018_corregido AS d 
  ON s.codcp=d.codcp
  WHERE s.tipocp != UPPER(d.tipocp)
  ORDER BY s.codcp
;

Que se actualizan en sip:

SELECT 'UPDATE sip_clase SET id_tclase=''' || UPPER(d.tipocp) || ''', ' ||
  'observaciones=''Tipo de centro cambiado por DIVIPOLA 2018. Antes era ' || s.tipocp || '.'' ' ||
  ' WHERE id=''' || s.sip_idcp || '''; -- ' || s.codcp || ' ' || s.centropoblado
  FROM   divipola_sip AS s JOIN divipola_oficial_2018_corregido AS d 
  ON s.codcp=d.codcp
  WHERE s.tipocp != UPPER(d.tipocp)
  ORDER BY s.codcp
;

7. Retroalimentación al DANE

Se hizo por twitter en:

No hubo respuesta por Twitter pero el 18.Nov.2019 en un muestreo al DIVIPOLA más recientes se encontraron correjidos todos los errores reportados.

Clone this wiki locally