如何在SQL Server中的函数上进行选择

时间:2019-05-20 16:33:24

标签: sql-server

在谈到SQL Server时,我还是一个新手,在弄清楚如何创建函数时遇到了问题。

我正在尝试根据用户int输入进行选择。该输入将代替a.ID_Aluno = 8

上的数字8。
SELECT 
    a.ID_ALUNO, b.ID_ALUNO, b.ID_Registo, c.ID_Registo, c.Classificacao
FROM 
    Aluno a, Registo b, Avaliação c 
WHERE 
    a.ID_Aluno = 8 
    AND b.ID_Aluno = a.ID_Aluno 
    AND b.ID_Registo = c.ID_Registo

我需要用户提供此号码(本例中为8)

这是我的错误尝试:

ALTER FUNCTION CalculaMedia
    (@input INT)
RETURNS INT
AS 
BEGIN
    DECLARE @ALUNO INT
    DECLARE @MEDIA FLOAT

    SET @ALUNO = @input

    SET @MEDIA = (SELECT SUM(c.Classificacao * d.Valor_Componente) / COUNT(c.Classificacao)
                  FROM Aluno a, Registo b, Avaliação c, Componente d
                  WHERE a.ID_Aluno = @ALUNO 
                    AND b.ID_Aluno = a.ID_Aluno 
                    AND b.ID_Registo = c.ID_Registo 
                    AND c.ID_Componente = d.ID_Componente)

    RETURN @MEDIA 
END

1 个答案:

答案 0 :(得分:0)

如果您使用整数,则可能应该进行转换为浮点运算,以便除法为您提供更准确的结果。

SELECT 1.0 * SUM(c.Classificacao * d.Valor_Componente) / COUNT(c.Classificacao)