Como calcular média , máxima e mínima no postgresql
Preciso de uma ajuda, como calcular média AVG, minima e maxima no postgresql com uma consulta dos ultimos 10 registros?
Através deste sql:
SELECT id,temperatura FROM tempexterna ORDER BY id DESC LIMIT 10
Gostaria de calcular a média dos ultimos 10 registro e mandar para uma váriavel no meu programa em Visual Studio C# para guarda-la e usar-la num gráfico.
Desde já, grato.
Através deste sql:
SELECT id,temperatura FROM tempexterna ORDER BY id DESC LIMIT 10
Gostaria de calcular a média dos ultimos 10 registro e mandar para uma váriavel no meu programa em Visual Studio C# para guarda-la e usar-la num gráfico.
Desde já, grato.
Fabiano Schincariol
Curtidas 0
Melhor post
Fabiano Schincariol
07/02/2014
já tentei fazer assim mas da esse erro :
ERRO: coluna "tempexterna.id" deve aparecer na cláusula GROUP BY ou ser utilizada em uma função de agregação
LINE 1: SELECT AVG(temperatura)FROM tempexterna ORDER BY id DESC LIM...
^
********** Erro **********
ERRO: coluna "tempexterna.id" deve aparecer na cláusula GROUP BY ou ser utilizada em uma função de agregação
SQL state: 42803
Caracter: 50
ERRO: coluna "tempexterna.id" deve aparecer na cláusula GROUP BY ou ser utilizada em uma função de agregação
LINE 1: SELECT AVG(temperatura)FROM tempexterna ORDER BY id DESC LIM...
^
********** Erro **********
ERRO: coluna "tempexterna.id" deve aparecer na cláusula GROUP BY ou ser utilizada em uma função de agregação
SQL state: 42803
Caracter: 50
GOSTEI 1
Mais Respostas
Leandro Chiodini
07/02/2014
opa
SELECT AVG(temperatura) ,MAX(temperatura) ,MIN(temperatura) FROM tempexterna ORDER BY id DESC LIMIT 10
GOSTEI 0
Leandro Chiodini
07/02/2014
tira o grup by nao tem como agrupar por id,
ja que o id eh unico
ja que o id eh unico
GOSTEI 0
Fabiano Schincariol
07/02/2014
a minha tabela é assim:
id, data, hora, temperatura
O meu software inseri no banco a cada dez minutos os dados de data hora e temperatura. Sem o id no order by não tem como ordenar as dez ultimas temperaturas.
Tirei o order by e não deu certo também
Grato
id, data, hora, temperatura
O meu software inseri no banco a cada dez minutos os dados de data hora e temperatura. Sem o id no order by não tem como ordenar as dez ultimas temperaturas.
Tirei o order by e não deu certo também
Grato
GOSTEI 0
Marisiana Battistella
07/02/2014
Olá!
Vê se essa solução te ajuda...
select AVG(temp.temperatura) as mediatemp
from (select id,
temperatura
from tempexterna
order by id DESC LIMIT 10) temp
Att
Vê se essa solução te ajuda...
select AVG(temp.temperatura) as mediatemp
from (select id,
temperatura
from tempexterna
order by id DESC LIMIT 10) temp
Att
GOSTEI 0
Fabiano Schincariol
07/02/2014
Tentei novamente e deu esse erro:
ERRO: função avg(record, integer) não existe
LINE 1: SELECT AVG(temp,temperatura) AS mediatemp
^
HINT: Nenhuma função corresponde com o nome e os tipos de argumentos informados. Você precisa adicionar conversões de tipo explícitas.
********** Erro **********
ERRO: função avg(record, integer) não existe
SQL state: 42883
Dica: Nenhuma função corresponde com o nome e os tipos de argumentos informados. Você precisa adicionar conversões de tipo explícitas.
Caracter: 8
ERRO: função avg(record, integer) não existe
LINE 1: SELECT AVG(temp,temperatura) AS mediatemp
^
HINT: Nenhuma função corresponde com o nome e os tipos de argumentos informados. Você precisa adicionar conversões de tipo explícitas.
********** Erro **********
ERRO: função avg(record, integer) não existe
SQL state: 42883
Dica: Nenhuma função corresponde com o nome e os tipos de argumentos informados. Você precisa adicionar conversões de tipo explícitas.
Caracter: 8
GOSTEI 0
Marisiana Battistella
07/02/2014
Você pode ter colocado uma vírgula onde deve ir um ponto...
SELECT AVG(temp,temperatura)
Dentro do parenteses é um ponto, pois "temp" é a abreviatura do select que tá na cláusula from.
é a mesma notação de utilizar abreviaturas para as tabelas....
SELECT AVG(temp,temperatura)
Dentro do parenteses é um ponto, pois "temp" é a abreviatura do select que tá na cláusula from.
é a mesma notação de utilizar abreviaturas para as tabelas....
GOSTEI 0
Fabiano Schincariol
07/02/2014
Muito obrigado Marisiana, você me ajudou muito!!!! Mas muito mesmo!!!! Continue sempre assim!!!!!
GOSTEI 0
Marisiana Battistella
07/02/2014
Por nada!!
Fico feliz por ter conseguido te ajudar!
Fico feliz por ter conseguido te ajudar!
GOSTEI 0
Fabiano Schincariol
07/02/2014
Como poderia estar jogando esse valor criado para uma variável dentro do meu programa em C# (Visual Studio)?
Estava entendo seu código que me passou, vocÊ criou um tabela com o nome de temp e a coluna com o nome de mediatemp, está correto o meu pensamento?
Desculpa, sou iniciante em SQL.
Estava entendo seu código que me passou, vocÊ criou um tabela com o nome de temp e a coluna com o nome de mediatemp, está correto o meu pensamento?
Desculpa, sou iniciante em SQL.
GOSTEI 0
Marisiana Battistella
07/02/2014
Isso!! O que eu fiz foi fazer um select de outro select.
Precisei colocar o apelido "temp" para poder referenciar os campos que retornam do subselect e pegar os valores deles.
O subselect retorna apenas os últimos 10 registros de temperaturas, desses 10 registros que me retornaram calculei a média com a função AVG.
Não sei t dizer como vc fará para pegar o valor C#, porque eu não sei programar em C#.. =D
Mas vc pode utilizar o código normalmente como se vc tivesse pegando valores de uma tabela...
Precisei colocar o apelido "temp" para poder referenciar os campos que retornam do subselect e pegar os valores deles.
O subselect retorna apenas os últimos 10 registros de temperaturas, desses 10 registros que me retornaram calculei a média com a função AVG.
Não sei t dizer como vc fará para pegar o valor C#, porque eu não sei programar em C#.. =D
Mas vc pode utilizar o código normalmente como se vc tivesse pegando valores de uma tabela...
GOSTEI 0