Você está na página 1de 3

CREATE TABLE aluno (

num integer PRIMARY KEY,


nome varchar NOT NULL);
CREATE TABLE curso (
id integer PRIMARY KEY,
nome varchar NOT NULL );
CREATE TABLE disciplina (
ref integer PRIMARY KEY,
nome varchar NOT NULL,
id integer NOT NULL REFERENCES curso);
select*from disciplina;
insert into disciplina values (100, 'Calculo I',30);
insert into disciplina values (101, 'Algebra Linear',30);
insert into disciplina values (102, 'Topologia',30);
insert into disciplina values (104, 'Office',20);
insert into disciplina values (108, 'Formatacao pc',20);
insert into disciplina values (105, 'Geodesia',10);
insert into disciplina values (106, 'Topografia I',10);
insert into disciplina values (107, 'Sensoriamento ',10);

insert into aluno values (1,'Augusto');


insert into aluno values (2,'Gustavo');
insert into aluno values (3,'Jorge');
insert into aluno values (4,'Nina');
insert into aluno values (5,'Agata');
insert into aluno values (6,'Melina');
insert into curso values (10,'Tecnico em Agrimensura');
insert into curso values (20,'Informática');
insert into curso values (30,'Matemática');
insert into curso values (40,'Marketing');
insert into curso values (50,'Engenharia Química');
insert into disciplina values (109, 'Administração ',40);
insert into disciplina values (110, 'Vendas ',40);
insert into disciplina values (111, 'Publicidade ',40);
insert into disciplina values (112, 'Quimica I ',50);
insert into disciplina values (113, 'Bioquimica ',50);
insert into disciplina values (114, 'Quimica organica ',50);

CREATE TABLE inscricao (


num integer REFERENCES aluno,
ref integer REFERENCES disciplina,
anoLetivo integer,
notaExame integer,
notaRecurso integer,
PRIMARY KEY (num, ref, anoLetivo));

insert into inscricao values (1,100,2013,9,0);


insert into inscricao values (3,100,2013,9,0);

insert into inscricao values (4,100,2013,4,5);


insert into inscricao values (5,100,2013,8,0);

insert into inscricao values (1,101,2013,10,0);


insert into inscricao values (1,103,2014,5,8);
insert into inscricao values (2,109,2018,9,0);
insert into inscricao values (2,110,2019,4,9);
insert into inscricao values (5,113,2013,7,0);
insert into inscricao values (5,114,2014,9,0);
insert into inscricao values (6,108,2007,8,0);

-- 1.Que alunos existem na base de dados (num, nome)?

select*from aluno;

--2.A que disciplinas já se inscreveu o aluno com o número 4 (ref, nome)?

select ref, nome from disciplina where ref in(


select ref from inscricao where num=1);
--3.A que disciplinas já se inscreveu o 'Tiago' (ref, nome)?

select ref, nome from disciplina where ref in(


select ref from inscricao where num in(
select num from aluno where nome like 'Tiago'));

--4.Quantos alunos se inscreveram na disciplina de SINF em 2007? (total)


select count(num) from inscricao where anoLetivo=2007 and
ref in(select ref from disciplina where nome like 'sinf');

select*from inscricao;
select*from aluno;
select*from disciplina;
select*from curso;
--5.Qual foi a média obtida no exame de SINF em 2008? (média)
select avg(notaExame) from inscricao where anoLetivo=2008 and ref in
(select ref from disciplina where nome like 'SINF');
--6.Que alunos foram ao exame de SINF mas não foram ao recurso em 2007? (num, nome)

select num from inscricao where notaExame>0 and anoLetivo=2013 and ref in
(select ref from disciplina where nome like 'Calculo I')except
select num from inscricao where notaRecurso>0 and anoLetivo=2013 and ref in
(select ref from disciplina where nome like 'SINF');

--7.Que alunos tiveram melhor nota no recurso do


--que no exame de SINF em 2007? (num,nome)

select num,nome from aluno where num in


(select num from inscricao where notaRecurso>notaExame and anoLetivo=2013 and
ref in
(select ref from disciplina where nome='SINF'))

--8.Para cada disciplina, indique a nota média do exame


--e do recurso em todos os anos?
--(ref, nome, média exame, média recurso)

select inscricao.ref, disciplina.nome, avg(notaExame), avg(notaRecurso)


from disciplina, inscricao where disciplina.ref=inscricao.ref
group by inscricao.ref, disciplina.nome;

--9.Para cada disciplina, indique a nota média do exame


--e do recurso em cada ano? (ref,nome, ano, média exame, média recurso)

select inscricao.ref, avg(notaExame), avg(notaRecurso)


from disciplina, inscricao where disciplina.ref=inscricao.ref
group by inscricao.ref union
select inscricao.anoLetivo, avg(notaExame), avg(notaRecurso)
from disciplina, inscricao where disciplina.ref=inscricao.ref
group by inscricao.anoLetivo ;

--10.Qual foi a nota mais alta de sempre a SINF? (nota)

select max(notaExame) from inscricao where ref in


(select ref from disciplina where nome='SINF')

--11.Qual aluno (ou alunos) tiraram essa nota? (Número e nome)


select aluno.num, aluno.nome from aluno, inscricao where aluno.num=inscricao.num
and
notaExame > all (select max(notaExame) from inscricao where ref in
(select ref from disciplina where nome='SINF'))

Você também pode gostar