Gator27
(usa Ubuntu)
Enviado em 01/07/2012 - 10:14h
Gostaria de de saber qual comando que acha a a média das notas dos alunos em cada disciplina deste banco de dados.
-- Criação da tabela Curso
create table curso
(
idcurso serial,
nomecurso varchar(50) Unique,
constraint pk_curso primary key (idcurso)
);
-- Criação da tabela Aluno
create table aluno (
matricula serial,
nomealuno varchar(60) not null,
idcurso integer,
constraint pk_aluno primary key (matricula),
constraint fk_aluno_curso foreign key (idcurso)
references curso (idcurso)
);
-- Criação da tabela Professor
create table professor
(
idprofessor serial,
nomeprofessor varchar(60) not null,
constraint pk_professor primary key (idprofessor)
);
-- Criação da tabela Disciplinas
create table disciplinas
(
iddisciplina serial,
nomedisciplina varchar(70) not null unique,
constraint pk_disciplina primary key (iddisciplina)
);
-- Criação da tabela Turma, esta tabela irá relacionar os professores e
-- as disciplinas de uma turma
create table turma
(
idturma serial,
idprofessor integer,
iddisciplina integer,
constraint pk_turma primary key (idturma, idprofessor, iddisciplina),
constraint fk_turma_disciplina foreign key (iddisciplina)
references disciplinas (iddisciplina),
constraint fk_turma_professor foreign key (idprofessor)
references professor (idprofessor)
);
-- Criação da tabela Inscrito, que relaciona os alunos às turmas
create table inscrito
(
matricula integer,
idturma integer,
idprofessor integer,
iddisciplina integer,
notas real,
faltas smallint,
constraint pk_inscrito primary key (matricula, idturma, idprofessor, iddisciplina),
constraint fk_inscrito_turma foreign key (idturma, idprofessor, iddisciplina)
references turma (idturma, idprofessor, iddisciplina),
constraint fk_inscrito_aluno foreign key (matricula)
references aluno (matricula)
);
-- Inserção dos valores nas tabelas
-- observe que em alguns casos foram omitidos os nomes dos campos
-- quando isto acontece, a lista de valores, usadas no parâmetro value
-- tem que seguir a mesmo ordem da disposição dos campos nas tabelas
insert into curso values (1, 'Informática'),
(2, 'Eletromecânica'),
(3, 'Miração');
Insert into professor (nomeprofessor) values ('Daniel'),('João Paulo'),('Marcelo'),
('Shaider'),('Cristiano'),('Alexandre'),
('Flávio');
insert into disciplinas values (1, 'Banco de dados'),
(2, 'Modelagem de dados'),
(3, 'Emprendedorismo'),
(4, 'Redes'),
(5, 'Informática Básica');
insert into aluno (nomealuno) values ('Ana '),('André'),('Angélica'),('Bruno'),('Élvis'),
('Evandro'),('Fabiano'),('Gustavo'),('Igor'),
('José Maria'),('Leidiane'),('Mailson'),('Meiryellen'),
('Nathália'),('Neive'),('Oberdan'),('Rayra'),
('Ricardo'),('Robsom'),('Sullivan'),('Wesley'),
('Beatriz'),('Bruna'),('Éric'),('Hugo'),
('João Victor'),('Jonas'),('Júlia'),('Laila'),
('Leonardo'),('Lucas'),('Marcela'),('Mariana'),
('Natana'),('Paulo'),('Raphael'),('Ronaldo'),
('Rosa'),('Samara'),('Samuel'),('Tainá'),
('Taline'),('Thamyres'),('Thiago'),('Ygor');
insert into turma values (1,1,1), (2, 2, 4), (3, 4, 3), (4, 5, 5), (5, 7, 2), (6, 6, 5);
-- atribuição de cursos para os alunos
update aluno set idcurso = 1
where matricula <=15;
update aluno set idcurso = 2
where matricula between 16 and 30;
update aluno set idcurso = 3
where matricula between 31 and (select count(*) from aluno);
-- inscrição dos alunos nas disciplinas
-- este comando insere registros obtidos em uma consulta
insert into inscrito (matricula, idturma, idprofessor, iddisciplina, notas, faltas)
select matricula,1,1,1, 9.5, 3
from aluno
where idcurso = 1;
insert into inscrito (matricula, idturma, idprofessor, iddisciplina, notas, faltas)
select matricula,2,2,4, 9.5, 3
from aluno
where idcurso = 1;
insert into inscrito (matricula, idturma, idprofessor, iddisciplina, notas, faltas)
select matricula,3,4,3, 9.0, 2
from aluno
where idcurso = 2;
insert into inscrito (matricula, idturma, idprofessor, iddisciplina, notas, faltas)
select matricula,6,6,5, 8.3, 2
from aluno
where idcurso = 3;
--
-- update nas notas da tabela inscrito
--
update inscrito
set notas = 7.5
where (matricula % 5) = 1;
update inscrito
set notas = 5.5
where (matricula % 11) = 1;
update inscrito
set notas = 6.5
where (matricula % 7) = 1;
update inscrito
set notas = 7.5
where (matricula % 5) = 1;
update inscrito
set faltas = 1
where (matricula % 5) = 1;