Fórum Calculando média #581976
31/05/2017
0
Galera sou iniciante e gostaria de tirar uma duvida.
Cria um FUNCTION no MYSQL que me retornaria a média de um aluno.
Mas gostaria de saber como faço pra calcular todas as notas de todos os alunos e me retorna a maior nota.
DELIMITER //
CREATE FUNCTION media (nome VARCHAR(10))
RETURNS FLOAT
DETERMINISTIC
BEGIN
DECLARE n1,n2,n3,n4 INT;
DECLARE med FLOAT;
SELECT nota1,nota2,nota3,nota4 INTO n1,n2,n3,n4 FROM notas WHERE
aluno = nome;
SET med = (n1+n2+n3+n4)/4;
RETURN med;
END
//
DELIMITER ;
Cria um FUNCTION no MYSQL que me retornaria a média de um aluno.
Mas gostaria de saber como faço pra calcular todas as notas de todos os alunos e me retorna a maior nota.
DELIMITER //
CREATE FUNCTION media (nome VARCHAR(10))
RETURNS FLOAT
DETERMINISTIC
BEGIN
DECLARE n1,n2,n3,n4 INT;
DECLARE med FLOAT;
SELECT nota1,nota2,nota3,nota4 INTO n1,n2,n3,n4 FROM notas WHERE
aluno = nome;
SET med = (n1+n2+n3+n4)/4;
RETURN med;
END
//
DELIMITER ;
Francismax
Curtir tópico
+ 0
Responder
Post mais votado
31/05/2017
Bom dia Francismax!
Fiz esse exemplo no SQL Server. Estuda ele e adapta pro MySQL.
Se a resposta for útil não esqueça de dar um like!
Fiz esse exemplo no SQL Server. Estuda ele e adapta pro MySQL.
--Criando a tabela
CREATE TABLE notas
(
aluno VARCHAR(50),
nota1 DECIMAL(10,2),
nota2 DECIMAL(10,2),
nota3 DECIMAL(10,2),
nota4 DECIMAL(10,2)
);
--Inserindo alguns registros
INSERT INTO notas (aluno, nota1, nota2, nota3, nota4) VALUES ('Daniel', 10, 9, 8, 7);
INSERT INTO notas (aluno, nota1, nota2, nota3, nota4) VALUES ('Marcos', 9, 8, 7, 6);
INSERT INTO notas (aluno, nota1, nota2, nota3, nota4) VALUES ('Tiago', 8, 7, 6, 5);
INSERT INTO notas (aluno, nota1, nota2, nota3, nota4) VALUES ('Gleydson', 7, 6, 5, 4);
INSERT INTO notas (aluno, nota1, nota2, nota3, nota4) VALUES ('Rafael', 6, 5, 4, 3);
--Criando a função
CREATE FUNCTION fn_media (@aluno VARCHAR(50))
RETURNS DECIMAL(10, 2)
AS
BEGIN
DECLARE @media DECIMAL(10, 2);
SET @media = (SELECT (nota1 + nota2 + nota3 + nota4) / 4 FROM notas WHERE aluno = @aluno);
RETURN @media;
END;
--Calculando a média de todos os alunos
SELECT aluno,
dbo.fn_media(aluno) AS Media
FROM notas;
--Trazendo a maior média
SELECT aluno,
dbo.fn_media(aluno)
FROM notas
WHERE dbo.fn_media(aluno) = (SELECT MAX(dbo.fn_media(n.aluno)) FROM notas n);
Se a resposta for útil não esqueça de dar um like!
Daniel Araújo
Responder
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)