Evandro Oliveira 331 Denunciar post Postado Junho 27, 2013 Qual a saída disso aqui [inline]select uf, count(t.statusPesquisa) as efetivo from tabela as t where t.statusPesquisa = 2 group by t.statusPesquisa[/inline]? Compartilhar este post Link para o post Compartilhar em outros sites
Bru_ce 53 Denunciar post Postado Junho 27, 2013 Mostrou BA e 338 efetivo Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Junho 27, 2013 e essa: select uf, amostra, count(statusPesquisa) from tabela where statusPesquisa = 2 group by statusPesquisa ? Compartilhar este post Link para o post Compartilhar em outros sites
Bru_ce 53 Denunciar post Postado Junho 27, 2013 UF BA AMOSTRA 30 count(statusPesquisa) 338 Acho que é +/- isso amigo, porém esse 338 não sei de onde saiu .. Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Junho 27, 2013 Perdão!! Erro meu. 338 é porquê você tem 338 registros cujo status é igual a 2.<br /><br />A consulta correta é select uf, amostra, count(statusPesquisa) from tabela where statusPesquisa = 2 group by uf Compartilhar este post Link para o post Compartilhar em outros sites
Bacsh 4 Denunciar post Postado Junho 27, 2013 Pensa assim comigo amigo: Vou dar um exemplo similar: Pensa em uma balada, Podem entrar pessoas de estados nela: tem na fila 30 pessoas de SP, porém a casa suporta apenas 20 de SP. Quando entrarem 20 de SP o segurança irá barrar o restante; Para o estado não aparecer mais no combobox o número de efetivos tem que ser superior ou igual à amostra entende .. E para o estado aparecer no combobox o número de efetivos tem que ser inferior à amostra. Você editou o post porque antes tava: Efetivos: 30 Amostra: 20 e depois você editou e colocou: Efetivos: 19 Amostra: 20 :closedeyes: No exemplo que você deu da balada, meu código faz isso, eu já coloquei os comentários, veja novamente. Compartilhar este post Link para o post Compartilhar em outros sites
Bru_ce 53 Denunciar post Postado Junho 27, 2013 Irei tentar basch, Evandro, agora a consulta retornou o uf, a amostra e os efetivos .. Tentei assim, só que sem resultado .. select uf, amostra, statusPesquisa from tabela where amostra < count(statusPesquisa) Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Junho 27, 2013 Evandro, agora a consulta retornou o uf, a amostra e os efetivos .. Tentei assim, só que sem resultado .. select uf, amostra, statusPesquisa from tabela where amostra < count(statusPesquisa) Para esse caso, [inline]count[/inline] demanda [inline]group by[/inline]. Que foi onde estávamos errando na última sugestão que te dei. Quando agrupávamos pelo status da pesquisa, quando o status da pesquisa era sempre 2, ele juntava tudo. Precisávamos agrupar por estado. Isso quer dizer que [inline]select uf, amostra, count(uf) as efetivo from tabela where statusPesquisa = 2 group by uf[/inline] deve retorna o que a gente precisa. O problema é que você não pode usar [inline]count[/inline] como critério de [inline]where[/inline]. Por isso a subconsulta. Compartilhar este post Link para o post Compartilhar em outros sites
Bru_ce 53 Denunciar post Postado Junho 27, 2013 Correto, então ..Sabe me dizer como ficaria uma subconsulta para selecionar apenas os registros que o total deles forem menor que a amostra ? Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Junho 27, 2013 O que nos leva ao mesmo resultado final que eu já havia sugerido anteriormente. Apenas aprimorei sem o LIMIT e ficou assim: select t1.nome, t1.uf from tabela as t1 where t1.amostra > (select count(t2.uf) from tabela as t2 where t2.uf = t1.uf and t2.statusPesquisa = 2 group by t2.uf); Compartilhar este post Link para o post Compartilhar em outros sites
Bru_ce 53 Denunciar post Postado Junho 27, 2013 Aparentemente funcionou Evandro, você É F*** KKKK !Muito obrigado mano, de coração.Deus continue lhe dando inteligência. Compartilhar este post Link para o post Compartilhar em outros sites