Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

2 Count Distinct em unica consulta

Bom dia,

Queria fazer 2 counts distintos em uma tabela no meu mysql. Tenho uma tabela [dinfaturamento] com as colunas: [fatsupervisor,fatcoordenador,fatdata,fatfilial] . Um coordenador pode ter varios supervisores, ja consigo fazer a contagem de supervisores e coordenadores unicos em duas consultas como no seguinte modelo:

select count(distinct fatcoordenador) as coordenador from dinfaturamento
where fatdata="2018-05-01" and fatfilial=2 and fatcoordenador<>0

No caso teria que fazer uma consulta para coordenadores e outra para supervisores, como resgatar as duas informações com uma unica consulta ?

Desde já, agradeço a atenção

8 respostas

Consigo fazer dois selects dentro de uma query só ? Seria esse o caminho ?

solução!

Boa tarde Yago!

Você já tentou fazer assim:

select count(distinct fatcoordenador) as coordenador, count(distinct fatsupervisor) as supervisor from dinfaturamento where fatdata="2018-05-01" and fatfilial=2 and fatcoordenador<>0

?

Comentário Removido

E ai Yago, tudo bom?

Então, se o intuito da tua consulta é correlacionar os elementos: fatsupervisor e fatcoordenador, seria interessante que ficassem em tabelas segregadas, mantendo o modelo de Entidade-Relacionamento.

Veja:

  • Tabela Filiais;

  • Tabela Supervisores;

  • Tabela Coordenadores.

Sendo que uma coluna será designada como foreign key entre Supervisores e Coordenadores, desta forma você pode realizar o Join entre estas de forma a trazer os Counts.

Espero ter ajudado, ademais, disponha um miniscript de inserção, caso realmente precise deste script no teu formato de estrutura, para que seja mais fácil de ajudarmos.

Grato.

Existe a tabela de coordenador, tabela de supervisor e filiais... Essa tabela que estou fazendo a consulta é uma tabela que controla produção .... Logo, nela tenho uma coluna com o id da produção, o da equipe , o do coordenador, supervisor e as demais informações ...

Apesar deu ter minha tabela de supervisores, por exemplo não são todos eles que em um determinado mês vao participar da produção ... Por isso preciso fazer esse cont dentro da produção ...

Está rodando com duas querys ... Se rodasse com uma séria melhor, enfim , vale a discussão...

Obrigado pela participação , Mateus :)

Certo, apesar de a solução proposta pelo Jonas funcionar, existe um outro método.

Realizando o Join na própria tabela é possível trazer ambos resultados desejados, veja o exemplo que eu montei:

SELECT A.NOME, A.IDADE, A1.ID

FROM CADASTRO_DE_FUNCIONARIOS as A

LEFT OUTER JOIN CADASTRO_DE_FUNCIONARIOS AS A1 ON A1.ID = A.ID

WHERE A.NOME = 'MANUEL'

AND A1.NOME = 'MANUEL'

Boa noite senhores, então... Tinha feito com a mesma lógica do Jonas, tinha dado errado, então Como o amigo Mateus disse a solução apresentada pelo Jonas Realmente funciona. E era realmente isso que eu estava procurando.

Agradeço mais uma vez a participação de todos.

Bom dia Yago! Não há de quê! Qualquer coisa estamos às ordens! Abraço!