Prefeitura de Ipatinga

Documentação Técnica · RFB × Ipatinga
Queries Prontas

Copia e usa

Todas as consultas que você vai precisar, testadas no banco, prontas pra rodar.

Empresas que são MEI

[1] Total de empresas MEI na base
SELECT COUNT(*) FROM empresas
WHERE natureza_juridica = '2135'
[2] MEIs em Ipatinga (via estabelecimentos)
SELECT COUNT(*)
FROM estabelecimentos est
JOIN empresas emp ON est.cnpj_base = emp.cnpj_base
WHERE est.cidade = '4625'
  AND emp.natureza_juridica = '2135'
[3] MEIs em Ipatinga ativas na RFB
SELECT
  est.cnpj_base || est.cnpj_ordem || est.cnpj_dv AS cnpj,
  emp.razao_social,
  est.situacao,
  est.logradouro,
  est.bairro
FROM estabelecimentos est
JOIN empresas emp ON est.cnpj_base = emp.cnpj_base
WHERE est.cidade = '4625'
  AND emp.natureza_juridica = '2135'
  AND est.situacao = '02'  -- apenas ativas

Filtros por município

[4] Todos os CNPJs de Ipatinga
SELECT * FROM estabelecimentos
WHERE cidade = '4625'
[5] Descobrir código de um município
SELECT codigo, nome FROM municipios
WHERE nome ILIKE '%IPATINGA%'

Situação cadastral

[6] Ativas × baixadas × suspensas em Ipatinga
SELECT
  est.situacao,
  CASE est.situacao
    WHEN '02' THEN 'Ativa'
    WHEN '03' THEN 'Inapta'
    WHEN '04' THEN 'Baixada'
    WHEN '08' THEN 'Suspensa'
    ELSE 'Outra'
  END AS situacao_desc,
  COUNT(*) AS total
FROM estabelecimentos est
WHERE est.cidade = '4625'
GROUP BY est.situacao
ORDER BY total DESC

Cruzamento Ipatinga × RFB

[7] Dashboard principal — KPIs
WITH base AS (
  SELECT DISTINCT ON (i.cpfcnpj)
    i.cpfcnpj,
    i.situacao                    AS sit_ipatinga,
    e.situacao                    AS sit_receita,
    e.cnpj_base IS NOT NULL       AS tem_receita,
    CASE WHEN UPPER(TRIM(i.logradouro)) = UPPER(TRIM(e.logradouro))
      THEN 1 ELSE 0 END           AS end_igual,
    CASE WHEN i.bairro = e.bairro
      THEN 1 ELSE 0 END           AS bairro_igual,
    CASE WHEN i.cep = e.cep
      THEN 1 ELSE 0 END           AS cep_igual
  FROM ipatinga i
  LEFT JOIN estabelecimentos e
    ON LEFT(i.cpfcnpj, 8)          = e.cnpj_base
    AND SUBSTRING(i.cpfcnpj, 9, 4) = e.cnpj_ordem
    AND RIGHT(i.cpfcnpj, 2)        = e.cnpj_dv
  WHERE i.situacao = 'Ativo'
)
SELECT
  COUNT(*)                                             AS total,
  SUM(CASE WHEN tem_receita THEN 1 ELSE 0 END)         AS com_receita,
  SUM(CASE WHEN NOT tem_receita THEN 1 ELSE 0 END)     AS sem_receita,
  SUM(CASE WHEN sit_receita = '02' THEN 1 ELSE 0 END)  AS ativas,
  SUM(CASE WHEN sit_receita = '04' THEN 1 ELSE 0 END)  AS baixadas,
  SUM(CASE WHEN sit_receita = '08' THEN 1 ELSE 0 END)  AS suspensas,
  SUM(CASE WHEN sit_receita = '03' THEN 1 ELSE 0 END)  AS inaptas,
  SUM(end_igual)                                       AS enderecos_ok,
  SUM(bairro_igual)                                    AS bairros_ok,
  SUM(cep_igual)                                       AS ceps_ok
FROM base
[8] Cruzamento completo com tipo de empresa
SELECT
  i.cpfcnpj,
  i.situacao                    AS sit_ipatinga,
  e.situacao                    AS sit_receita,
  emp.natureza_juridica,
  CASE emp.natureza_juridica
    WHEN '2135' THEN 'É MEI'
    WHEN '2062' THEN 'Ltda'
    WHEN '2054' THEN 'SA'
    WHEN '2240' THEN 'EIRELI'
    ELSE 'Outro'
  END                           AS tipo_empresa,
  emp.razao_social,
  i.logradouro                  AS end_ipatinga,
  e.logradouro                  AS end_receita
FROM ipatinga i
LEFT JOIN estabelecimentos e
  ON LEFT(i.cpfcnpj, 8)          = e.cnpj_base
  AND SUBSTRING(i.cpfcnpj, 9, 4) = e.cnpj_ordem
  AND RIGHT(i.cpfcnpj, 2)        = e.cnpj_dv
LEFT JOIN empresas emp ON e.cnpj_base = emp.cnpj_base
WHERE i.situacao = 'Ativo'
ORDER BY i.cpfcnpj

Divergências

[9] Ativas em Ipatinga mas baixadas/suspensas na RFB
SELECT
  i.cpfcnpj,
  i.situacao   AS sit_ipatinga,
  e.situacao   AS sit_receita,
  CASE e.situacao
    WHEN '04' THEN 'BAIXADA'
    WHEN '08' THEN 'SUSPENSA'
    WHEN '03' THEN 'INAPTA'
  END          AS problema
FROM ipatinga i
LEFT JOIN estabelecimentos e
  ON LEFT(i.cpfcnpj, 8)          = e.cnpj_base
  AND SUBSTRING(i.cpfcnpj, 9, 4) = e.cnpj_ordem
  AND RIGHT(i.cpfcnpj, 2)        = e.cnpj_dv
WHERE i.situacao = 'Ativo'
  AND e.situacao IN ('04', '08', '03')
ORDER BY e.situacao
[10] Ativas em Ipatinga mas sem registro na RFB
SELECT i.cpfcnpj, i.situacao, i.logradouro
FROM ipatinga i
LEFT JOIN estabelecimentos e
  ON LEFT(i.cpfcnpj, 8)          = e.cnpj_base
  AND SUBSTRING(i.cpfcnpj, 9, 4) = e.cnpj_ordem
  AND RIGHT(i.cpfcnpj, 2)        = e.cnpj_dv
WHERE i.situacao = 'Ativo'
  AND e.cnpj_base IS NULL