Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

diegoblu

Group by com semelhança

Recommended Posts

Olá pessoal, td bem?

Estou com uma situação que acredito muitos já passaram pelo mesmo problema...

Tenho uma tabela "clientes" onde tenho um campo "clienteBairro" sendo varchar. Preciso agrupar os clientes por bairro, e obter a qtd de cada um. Até aí tranquilo, consigo fazer da seguinte forma:

select
Count(clienteID) as qtd,
clienteBairro
from clientes where clienteStatus=1 group by clienteBairro

O problema é que o campo é varchar, ou seja, aceita qual lixo que coloquem ali. Então tenho casos como:

São Marcos
Sao Marcos
São Marcus
e assim por diante...
Existe alguma maneira, função, replace, qualquer coisa do gênero, que faça o "group" como semelhança? Neste caso, o select entenderia os bairros acima como sendo um único (São Marcos).
Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use uma function de usuário que remova acentos e a function padrão UPPER

ficaria algo como :

select
Count(clienteID) as qtd,
upper(remove_acentos(clienteBairro)) bairro
from clientes 
where clienteStatus=1 
group by upper(remove_acentos(clienteBairro))

isto faz oa básico , para o caso como o "São Marcus" , leia sobre algoritmos de similaridade como o Jaro – Winkler

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.