Ir para conteúdo
EliseuFirmino

Média Anual

Recommended Posts

Bom dia pessoal!

 

Tenho a seguinte consulta: 

 

SELECT
    to_char(a.dt_entrada,'yyyy') ano,
    COUNT(A.NR_ATENDIMENTO) total_atendimento,
    COUNT(A.NR_ATENDIMENTO)/12 media


FROM TASY.ATENDIMENTOS_V A

WHERE decode(upper(:tp_data), 'E', a.dt_entrada, 'A', a.dt_alta)  BETWEEN :DT_INICIAL AND TASY.FIM_DIA(:DT_FINAL)

and a.dt_cancelamento is null
and a.cd_setor_atendimento in (126,130, 132, 29)
and to_number(a.cd_estabelecimento) = 1

group by to_char(a.dt_entrada,'yyyy')
order by 1 desc

 

Com o seguinte retorno:

ano       total_atendimento                    media

2018              21570                                1797,5
2017              21369                                1780,75
2016              16469                                1372,41666666667
2015              10736                                894,666666666667

 

Nela vejo a média de atendimentos em casa ano. Numa consulta de 1 de jan de 2015 até 31 de dez de 2017, tudo funciona normalmente. Mas se eu colocar por exemplo de 1 de jan de 2015 até  30 de set de 2018, tenho um problema. Deveria dividir por 9 e não por 12.

Alguém saberia me indicar como devo realizar esta consulta de forma a calcular os meses que estão no período indicado, com quebra por ano?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

/count(to_char(a.dt_entrada,'yyyymm'))

No lugar do 12.

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

  • Conteúdo Similar

    • Por isaque_cb2
      Boa noite, estou postando qui por que pesquisei e não achei nada que ajudasse... bem, criei um banco de dados para armazenar meus projetos e carrega-los dinamicamente com o php, deu certo, mas quando tem alguma acentuação no texto ele retorna "�"... 
      ~Grato desde Já~
    • Por Pedro Terencio
      votar contrafavorita   Bom dia galera, estou com uma duvida sobre manipulação de data. Preciso pegar um valor (dado pelo usuario) e transformar este valor em dia do mês.
       
      Exemplo : 
      $Valor_Usuario = 30;
      $Data = 12/10/2018;
      $Resultado = 30/10/2018;
       
      O que estou buscando fazer é, uma rotina de gastos, então o usuario me informa um dia fixo de gasto, (Todo dia 30 irei gastar R$50) e o sistema todo dia 30 irá subtrair R$50 da conta. O que me gera outra duvida...
       
      Depois da manipulação da data como fazer esse checking da data? (Se hoje é dia 30 ou não // Para saber quando subtrair os R$ 50)
    • Por maal0n
      Bom dia pessoal, sou iniciante no php e estou com um problema, alguem consegue me ajudar...
       
      O codigo abaixo tem a função de mostrar todos os vencimentos da semana para pagamento de mensalidades... só que ele encontra o dia do sabado(ultimo dia da semana) e mostra os 6 dias anteriores a ele... o problema acontece quando o sabado cai no dia 1 ou 2 do mes seguinte... ai ele vai calcular dia 1 menos 6... e nao vai me gerar resultados nenhum... conseguiram entender? alguem consegue me ajudar nisso ?
       
      segue meu codigo..
       
       
       
      <?php $seleciona = mysql_query("SELECT anoselecionado FROM anoselecionado LIMIT 1"); while($ln = mysql_fetch_array($seleciona)){ $anoselecionado = $ln['anoselecionado']; } ?> <?php $dataatual = date('d/m/y'); $partes = explode("/", $dataatual); $diaatual = $partes[0]; $mesatual = $partes[1]; $anoatual = "20".$partes[2]; if ($mesatual == "1"){$essemes = 'jan';}; if ($mesatual == "2"){$essemes = 'fev';}; if ($mesatual == "3"){$essemes = 'mar';}; if ($mesatual == "4"){$essemes = 'abr';}; if ($mesatual == "5"){$essemes = 'mai';}; if ($mesatual == "6"){$essemes = 'jun';}; if ($mesatual == "7"){$essemes = 'jul';}; if ($mesatual == "8"){$essemes = 'ago';}; if ($mesatual == "9"){$essemes = 'setembro';}; if ($mesatual == "10"){$essemes = 'outubro';}; if ($mesatual == "11"){$essemes = 'nov';}; if ($mesatual == "12"){$essemes = 'dez';}; $sabado = 6; //sabado = 6º dia = fim da semana. $dia_atual=date('w'); //pego o dia atual $dias_que_faltam_para_o_sabado = $sabado - $dia_atual; $inicio = strtotime("-$dia_atual days"); $fim = strtotime("+$dias_que_faltam_para_o_sabado days"); $primdiasemana = date('d',$inicio); //data inicial $ultmodiasemana = date('d',$fim); //data final $seleciona = mysql_query("SELECT * FROM mensalidades WHERE (data_pagamento BETWEEN '".$primdiasemana."' and '".$ultmodiasemana."') and ano = ".$anoselecionado." and $essemes = 0 ORDER by id DESC"); $conta = mysql_num_rows($seleciona); if($conta <= 0){ echo "<center><div><h3>Não existem mensalidades pendentes com vencimento esta semana</h3></div></center>"; }else{ echo " <table class='table table-bordered' id='tabela-mensalidades'> <thead> <tr style='backgroud-color: #2D335B'> <th style='width: 200px'>Aluno</th> <th>Vencimento</th> <th>Status</th> <th>Serviço</th> <th>Valor</th> </tr> </thead> "; while($ln = mysql_fetch_array($seleciona)){ $id = $ln['id']; $clientes_id = $ln['clientes_id']; $servico_id = $ln['servico_id']; ?>  
    • Por Rafael Freitas
      Boa tarde galera!
      Estou tentando fazer o seguinte:
         Eu quero que a consulta do Mysql mostre somente os campos em que a data do "ultimo_laudo" seja 3 meses menor que a data atual.
       
      Ainda não tenho muito conhecimento, então relevem =)
       
      Estou tentando fazer assim:
      $busca = "SELECT * FROM anuncios WHERE ultimo_laudo < CURRENT_DATE() -90"; Agradeço a atenção! o/
    • Por jonata paulino
      Eu tenho 4 colunas com valores numéricos e gostaria de tirar a média linha por linha dessas colunas e criar uma nova com essas médias.
      Obrigado
×

Informação importante

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