在谈到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
答案 0 :(得分:0)
如果您使用整数,则可能应该进行转换为浮点运算,以便除法为您提供更准确的结果。
SELECT 1.0 * SUM(c.Classificacao * d.Valor_Componente) / COUNT(c.Classificacao)