-- 1) Para cada valor de nível que aparece em Aluno, imprima o nível e idade média dos alunos desse nível. select nivel, avg(idade) as idadeMedia from aluno group by nivel; -- 2) Para cada valor de nível que aparece em Aluno exceto os níveis que possuem menos de 10 alunos, imprima o nível e idade média dos alunos desse nível. select nivel, avg(idade) as idadeMedia from aluno group by nivel having count(nroAluno) >= 10; -- 3) Encontre os nomes dos professores para os quais a quantidade de alunos na lista de matriculados de ao menos um dos cursos que eles ministram é menor do que cinco. select nomeProf from professor as P, curso as C where P.idProf = C.idProf and (select count(nroAluno) from Matriculado where C.nome = nomeCurso) < 5; -- 4) Para cada professor que ministra cursos apenas na sala R128, imprima seu nome e o número total de cursos que ele ou ela ministra. select nomeProf, numeroCursos from professor natural join (select idProf, count(*) as numeroCursos from curso where idProf not in (select idProf from curso where sala <> 'R128') group by idProf) as C; -- 5) Encontre os nomes dos alunos matriculados no número máximo de cursos. select nomeAluno from Aluno where nroAluno in (select nroAluno from Matriculado group by nroAluno having count(*) >= ALL (select count(nomeCurso) from Matriculado group by nroAluno)); -- 6) Para cada valor de idade que aparece em Aluno, encontre o valor do nível que aparece com mais frequência. Por exemplo, se houver mais alunos no nível FR com idade 18 do que os alunos com idade 18 dos níveis SR, JR ou SO, você deve imprimir o par (18,FR). select idade, nivel from Aluno as A group by idade, nivel having count(nivel) >= ALL (select count(*) from Aluno where idade = A.idade group by nivel);