Как мне сделать это выбрать функцию в SQL Server - PullRequest
0 голосов
/ 20 мая 2019

Я немного новичок, когда дело доходит до SQL Server, и у меня возникают проблемы с выяснением, как создавать функции.

Я пытаюсь сделать этот выбор на основе ввода int пользователя.Этот ввод будет происходить из числа 8 в a.ID_Aluno = 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 голосов
/ 20 мая 2019

Если вы работаете с целым числом, вам, вероятно, следует выполнить преобразование в число с плавающей точкой, чтобы деление дало вам более точный результат.

SELECT 1.0 * SUM(c.Classificacao * d.Valor_Componente) / COUNT(c.Classificacao)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...