Ir para conteúdo
Entre para seguir isso  
Elizandro Oliveira

Consulta com COUNT e IF

Recommended Posts

Boa Tarde,

 

Tenho as seguintes queries:

 

//Pega o total de produtos da familia. Ex 25

$query ="SELECT *, COUNT(familia) as total from cadastro group by familia";
$executa=mysql_query($query);
$a=mysql_fetch_array($executa);

 

//Pega o total de produtos já fabricados com base na data de retorno;
$queryb ="SELECT COUNT(familia) as pronto from cadastro where dataretorno<>'0000-00-00 00:00:00' group by familia";
$executab=mysql_query($queryb);
$b=mysql_fetch_array($executab);

 

//Pega o total de produtos em produção com base na data de retorno.

$queryc ="SELECT COUNT(familia) as producao from cadastro where dataretorno='0000-00-00 00:00:00' group by familia";
$executac=mysql_query($queryc);
$c=mysql_fetch_array($executac);

 

Problema está que ele retorna, apenas de uma família, pois não está em um while nem nada. Tentei usar um IF na consulta mas não obtive sucesso.

 

Exemplo de dados gravados:

 

familia              dataretorno                        

C2-2018       0000-00-00 00:00:00

C2-2018       2018-02-02 00:00:00

C3-2018       2018-02-03 00:00:00

C4-2018       2018-02-05 00:00:00

C5-2018       2018-02-07 00:00:00

C5-2018       2018-02-07 00:00:00

C5-2018       0000-00-00 00:00:00

 

Saida MYSQL agrupando por família

 

familia              dataretorno                   pronto           producao          total       

C2-2018       0000-00-00 00:00:00                1                       1                        2

C3-2018       2018-02-03 00:00:00                1                       0                        1

C4-2018       2018-02-05 00:00:00                1                       0                        1

C5-2018       2018-02-07 00:00:00                2                       1                        3

 

Como poderia fazer isso usando apenas uma querie, tentei com sub selects tbm naum consegui

 

Muito obrigado pela atenção e colaboração.

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido usando:

 

SELECT familia, SUM( CASE WHEN dataretorno ="0000-00-00 00:00:00" THEN 1 ELSE 0 END) AS producao, SUM( CASE WHEN dataretorno <>"0000-00-00 00:00:00" THEN 1 ELSE 0 END) AS pronto, SUM( CASE WHEN dataretorno IS NOT NULL THEN 1 ELSE 0 END) AS total FROM cadastro group by familia

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

  • Conteúdo Similar

    • Por mr22robot
      Estou com uma dúvida. É possível determinar um select a partir de uma escolha?
      Ex. 
      SELECT CASE WHEN a < b THEN select * from tabela1 WHEN d < e THEN select * form tabela2 END FROM tabela; Algo parecido. Se uma condição for atendida select1 , se outra condição for atendida: select2.
      O que acontece: estou com um relatorio que preciso criar no winthor e não consigo melhorar isso. Tenho de fazer três relatorios como solução. Se eu consigo implantar isso, eu faria somente um relatorio. 
      Tipo se marcar um campo, sai um relatorio. Se marcar outro, saí outro relatorio.
    • Por vagner.analista
      Senhores boa tarde, alguém pode me ajudar?
       
      Tenho a seguinte situação, um campo data em duas tabelas, onde caso o contrato tenha aditivo o campo data da tabela TITMCNTADITIVO,  fica preenchido. caso o contrato não tem aditivo ela fica com o valor null. Então caso o valor dessa tabela aditivo estiver null, eu gostaria de apresentar o campo data da tabela TITMCNT do contrato que tem a data fim do contrato, com o select abaixo eu consigo saber se tem aditivo ou não:
      SELECT TOP 1   (DATA + 90) AS DATAFIM              FROM TITMCNTADITIVO (NOLOCK)             WHERE 1=1             AND CODCOLIGADA = 1             AND IDCNT = 72 Neste caso este contrato não tem aditivo, então, gostaria que ele executasse outro SELECT:
      SELECT (DATAFIM + 90) AS DATA_FIM  FROM TITMCNT             WHERE IDCNT = '72'  
       
      O mais lógico que tentei foi assim, mas não dá certo:

      SELE
      CT TOP 1  (DATA + 90) AS DATAFIM, CASE (DATA) WHEN IS NULL THEN ( SELECT (DATAFIM + 90) AS DATA_FIM  FROM TITMCNT                     WHERE IDCNT = '72' ) END AS DATAFIM FROM TITMCNTADITIVO (NOLOCK) WHERE 1=1 AND CODCOLIGADA = 1 AND IDCNT = 72  
    • Por nicolasbessa
      Boa tarde!
       
      Como aplicar a regra abaixo em um select?

      Regra Join
      Quando o campo substr(x, 1,1)  ='1'
      montar a chave de pesquisa:
      y = '8' AND y1 =  'L'||lpad( x1, 2)) 

      Quando o campo substrt(x, 1,1) for igual ='A'
      montar a chave de pesquisa:
      y = '8' AND y1 =  'M'||lpad( x1, 2)) 
       
      obrigado!
    • Por caio_fgf
      Estou desenvolvendo um site e necessito que o menu receba a classe ativo quando o botão for clicado, e se este for clicado de novo ou qualquer parte do documento for clicada, o menu perca a classe.
      Ao clicar em outra parte da página, o menu desaparece, porém, ao clicar novamente no botão do menu, não consigo a aplicação desejada
      $(document).ready(function () { var menu = $("nav") $(".bt_menu").click(function (e) { if (menu.hasClass("ativo")) menu.removeClass("ativo"); else menu.addClass("ativo"); e.stopPropagation(); }); $(document).click(function (e) { $('nav').removeClass("ativo"); }); }); Grato pela atenção
    • Por BryanSamuel
      existe alguma função que formate uma data por exemplo 26/09/2018, em um número inteiro? mais ou menos igual o excel, que começa a contar os dias a partir do dia 01/01/1900, se caso não exista uma função como eu faço isso? agradeço a ajuda desde já.
×

Informação importante

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