Usuário com melhor resposta
Selecionar o primeiro e último registro de cada dia

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.
Respostas
-
Deleted
- Sugerido como Resposta Alex M Bastos terça-feira, 6 de novembro de 2018 00:35
Todas as Respostas
-
Deleted
- Sugerido como Resposta Alex M Bastos terça-feira, 6 de novembro de 2018 00:35
-
-
-
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]