同一查询但在函数

时间:2016-11-26 19:43:56

标签: mysql sql function

我有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的值,这是正确的答案。 我很困惑,为什么我得到不同的价值,当它应该给出相同的价值时,我想。

2 个答案:

答案 0 :(得分:1)

问题在于:

where Estadia = estadia

相同
where 1 = 1

您的参数和列应该有不同的名称,因此DBMS知道您在说什么。

答案 1 :(得分:0)

您必须使用resolve子句

GROUP BY