Inquiridor
select ( o mais distinct possivel ) from tabela :)

Discussão Geral
-
Pessoal,
Possuo uma base de dados de clientes e preciso selecionar X registros sendo que, a cidade deve ser a mais variada possível porém, se eu usar o distinct ele obriga que não se repita a cidade, mas em alguns casos eu posso ter 200 registros onde 50 são de uma mesma cidade e neste caso eu não conseguiria obter 100 registros 100% diferentes.
Existe como montar uma query onde a logica seria algo assim :Procure 100 registros dentro desta tabela com cidades diferentes, mas caso não consiga ter 100 diferentes, repita a menor quantidade de vezes possível, cada um ?
Desta forma se só existirem 80 cidades diferentes no banco, ele pode passar a pegar 2 usuarios da mesma cidade, 3 usuarios, etc.. enfim.. preciso trazer sempre 100 registros mas o mais variado possível, em relação a cidade.
Algum saberia como fazer ?
Abraços
Todas as Respostas
-
Rafael Metring,
Tenta adaptar o codigo abaixo, dessa forma você vai estar consultando os 100 primeiros clientes das cidades que tem o menor numero de clientes:
Select top 100 codigo_cliente, nome_cliente From Clientes c inner join (Select cidade, count(*) from TabelaClientes group by cidade order by 2) B on c.cidade = b.cidade
Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
-
Marcos, obrigado por seu retorno mas não quero saber quem tem menos clientes.
O que preciso é trazer o maior número de clientes de cidades diferentes.Se puxo 10 registros e possuo pelo menos 10 cidades diferentes no cadastro de cliente ele tem que me trazer 10 clientes de cidades diferentes.
Se puxo 10 registros e possuo apenas 5 cidades diferentes entre os cadastros, ele vai ter que trazer 2 clientes de cada cidade..
Se todo mundo é da mesma cidade, então ele vai ter que trazer 10 pessoas da mesma cidade, já que não tem jeito mesmo...Espero ter esclarecido melhor..
-
Rafael, ve se isso te ajuda:
CREATE TABLE #Clientes ( NOMECLIENTE VARCHAR(100), CIDADE VARCHAR(100) ) INSERT INTO #Clientes VALUES ('MARIA','SÃO PAULO') INSERT INTO #Clientes VALUES ('JOSE','SÃO PAULO') INSERT INTO #Clientes VALUES ('JOAO','RIO DE JANEIRO') INSERT INTO #Clientes VALUES ('ANA','RIO DE JANEIRO') INSERT INTO #Clientes VALUES ('PAULA','SÃO BERNARDO') INSERT INTO #Clientes VALUES ('CESAR','TABATINGA') INSERT INTO #Clientes VALUES ('ANDRE','COPACABANA') INSERT INTO #Clientes VALUES ('MONICA','GUARULHOS') INSERT INTO #Clientes VALUES ('RAQUEL','MARILIA') INSERT INTO #Clientes VALUES ('ROSANA','MARINGA') INSERT INTO #Clientes VALUES ('FABIO','MARINGA') INSERT INTO #Clientes VALUES ('CARLOS','BELO HORIZONTE') SELECT TOP 10 CIDADE , NOMECLIENTE , ROW_NUMBER() OVER (PARTITION BY CIDADE ORDER BY CIDADE) FROM #Clientes ORDER BY 3
Flw!
Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
-