none
Selecionar o primeiro e último registro de cada dia RRS feed

  • Pergunta

  • Boa noite Srs. 

    Estou com um problema aqui e não estou conseguindo resolver. 

    Seguinte tenho uma tabela com 2 campos. Campo  data (datetime) e um campo consumo (numeric(18,1)). 

    A inserção dos dados nessa tabela é feita de 10 em 10 minutos e o campo consumo é um valor acumulado. Ou seja se eu quiser saber o consumo do dia eu pego o último registro do dia menos o primeiro registro do dia. 

    Porém eu não vou determinar o dia, o que eu preciso saber é o consumo de todos os dias, exemplo da tabela desejada: 

    data               /          consumo 

    03/05/2018    /          132,1  

    04/05/2018    /          113,4 

    05/05/2018    /          110,8   

    Agradeço a atenção.  

    segunda-feira, 5 de novembro de 2018 20:23

Respostas

Todas as Respostas

  • Deleted
    • Sugerido como Resposta Alex M Bastos terça-feira, 6 de novembro de 2018 00:35
    segunda-feira, 5 de novembro de 2018 20:55
  • Perfeito José Diz. As vezes nós complicamos tanto uma coisa que damos um nó na cabeça. Estava pensando em uma forma usando ordenação e top 1, mas a sua resposta me atende perfeitamente. 

    Obrigado.

    segunda-feira, 5 de novembro de 2018 21:21
  • Deleted
    segunda-feira, 5 de novembro de 2018 21:47
  • Perfeito José Diz. As vezes nós complicamos tanto uma coisa que damos um nó na cabeça. Estava pensando em uma forma usando ordenação e top 1, mas a sua resposta me atende perfeitamente.

    Willian, o primeiro código que esbocei também procurava obter o primeiro e último valores de consumo de cada dia, usando as funções first_value() e last_value(). Mas achei que tinha ficado complicado e, relendo o enunciado, a frase "o campo consumo é um valor acumulado" chamou a atenção e indicou a solução.

    José Diz     Belo Horizonte, MG - Brasil     [Linked In]   [e-mail]   [Porto SQL]



    José,

    Também poderíamos pensar em utilizar as funções analíticas Lag() e Lead(), mas particularmente eu prefiro as First_Value() e Last_Valeu().


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 6 de novembro de 2018 16:16