Como fazer agrupamento sql por raiz do cnpj?
agrupamento sql raiz do cnpj
Para isso pode ser usado substr veja abaixo como:
Sintaxe:
select substr(nome do campo, número do caractere inicial, número do caractere final) as raiz do cnpj, count(posição do array da substring) as quantidade agrupada from nome da tabela group by substr(nome do campo, número do caractere inicial,número do caractere final);
Exemplo:
Nesse caso a tabela se chama "empresa" e registra o "cnpj" apenas com números ou seja um bigint, ficaria assim:
select substr(cnpj, 1, 8) as raiz_cnpj, count(0) as quantidade_agrupada from empresa group by substr(cnpj, 1, 8);
Explicações:
Se o cnpj estivesse como varchar(18) com pontos e barras bastaria substituir o 8 no caractere final por 11. Esse número é referente a quantidade de dígitos antes dos zeros, da numeração de filial e dígitos verificadores.
O count adicionado a query é para contar quantos registros tem para aquela raiz de cnpj caso seja necessário, se não houver necessidade dessa informação, não precisa usá-lo.
Leia mais em: t.wikipedia.org/wiki/SQL