Ir para conteúdo

Arquivado

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

Emerson Luiz

Porcentagem entre valores

Recommended Posts

Amigos,

 

Estou usando o seguinte codigo para achar o percentual entre 2 valores:

 

 

SET @total1=(SELECT count(*)
FROM cdr_cdr
WHERE disposition = 'ANSWERED' AND MONTH(calldate)=MONTH(CURDATE())
);
SET @total2=(SELECT count(*)
FROM cdr_cdr
WHERE disposition = 'ANSWERED' AND MONTH(calldate)= MONTH(CURRENT_DATE - INTERVAL 1 MONTH)
);
SELECT (@total1 - @total2) / @total1 * 100 AS perc
O codigo acima fucniona bem, porem queria fazer isso em um único SELECT e cria um campo MES com o nome do mê atual.
Podem me dar uma ajuda?
Obrigado..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugestão:

SELECT
  @total1:= COUNT( IF( MONTH( calldate ) = MONTH( CURDATE() ), 1, NULL ) ) AS total1,
  @total2:= COUNT( IF( MONTH( calldate ) = MONTH( CURRENT_DATE - INTERVAL 1 MONTH ), 1, NULL ) ) AS total2,
  ( @total1 - @total2 ) / @total1 * 100 AS perc
FROM cdr_cdr
WHERE
  disposition = 'ANSWERED'
  AND (
    MONTH( calldate ) = MONTH( CURDATE() )
    OR
    MONTH( calldate ) = MONTH( CURRENT_DATE - INTERVAL 1 MONTH )
  ) 

Ou talvez:

SELECT
  (
    COUNT( IF( MONTH( calldate ) = MONTH( CURDATE() ), 1, NULL ) ) - COUNT( IF( MONTH( calldate ) = MONTH( CURRENT_DATE - INTERVAL 1 MONTH ), 1, NULL ) )
  ) / COUNT( IF( MONTH( calldate ) = MONTH( CURDATE() ), 1, NULL ) ) * 100 AS perc
FROM cdr_cdr
WHERE
  disposition = 'ANSWERED'
  AND (
    MONTH( calldate ) = MONTH( CURDATE() )
    OR
    MONTH( calldate ) = MONTH( CURRENT_DATE - INTERVAL 1 MONTH )
  )

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.