2016-11-26 16 views
0

Pontuation(Pontuacao)とAccomodation(Estadia)に固有の番号があるテーブルがあり、各宿泊施設の平均的な発音を計算したい。 これはテーブルです:同じクエリではあるが関数内で結果が異なる

Estadia | Pontuacao 
------------------- 
5  | 5 
------------------- 
5  | 5 

だから私はこのfuncionを作った:

delimiter $$ 
create function mediapontuacao(estadia int) 
returns float 
begin 
    declare media float; 
    select sum(Pontuacao)/count(*) into media 
     from EstadiaUtilizador 
    where Estadia = estadia; 
    return media; 
end $$ 

私はこの

select mediapontuacao(5); //calculate average pontuation of the accomodation which number is 5 

を行う場合は、このクエリは私に3.965の値を与えます。 しかし、私は、言い換えれば、この

select sum(Pontuacao)/count(*) 
     from EstadiaUtilizador 
where Estadia = 5; 

は数が5である宿泊施設の平均pontuation、私が書いた関数が何をすべきまったく同じことを計算しないと、このクエリは私に正確である5.00の値を与える場合回答。 私はなぜ同じ値を与えなければならないときに私は異なった価値を得るのか困惑している、と私は思う。

where Estadia = estadia 

あなたのパラメータとカラムが異なっている必要があり

where 1 = 1 

、たとえば、同じである:

答えて

1

を使用する必要があります。 DBMSは、あなたが話していることを知っています。

+0

これは問題で、私はそれが違っていると教えてくれました。ありがとうございました。 –

0

あなたは問題がここにあるGROUP BY

select 
    Estadia, 
    sum(Pontuacao)/count(*) as mediapontuacao 
from 
    EstadiaUtilizador 
group by 
    Estadia 
having Estadia = 5 
関連する問題