我有Pontuation(Pontuacao)的桌子和住宿(Estadia)的唯一编号,我想计算每个住宿的平均数量。 这是表格:
Estadia | Pontuacao
-------------------
5 | 5
-------------------
5 | 5
所以我做了这个功能:
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的住宿的平均数量,我编写的函数应该完全相同,这个查询给出了5.00的值,这是正确的答案。 我很困惑,为什么我得到不同的价值,当它应该给出相同的价值时,我想。
答案 0 :(得分:1)
问题在于:
where Estadia = estadia
与
相同where 1 = 1
您的参数和列应该有不同的名称,因此DBMS知道您在说什么。
答案 1 :(得分:0)
您必须使用resolve
子句
GROUP BY