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.
Sintaxe:
Exemplos:
Para saber a quantidade de notas emitidas de venda em um mês, para cada cidade seria algo como:
cidade | quantidade_de_venda |
São Paulo | 123 |
Rio de Janeiro | 102 |
Brasilia | 86 |
cidade | valor |
São Paulo | 23030,45 |
Rio de Janeiro | 21132,35 |
Brasilia | 18462,86 |
cidade | bairro | valor |
Porto Alegre | Centro | 4159,62 |
Porto Alegre | Menino Deus | 39416,16 |
Porto Alegre | Bom Fim | 22462,86 |