Buscar

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

FUNDAMENTOS DE BANCO DE DADOS 
8a aula 
Lupa 
 
 
 
PPT 
 
MP3 
 
 
 
Exercício: CCT0641_EX_A8__V1 30/10/2019 
Aluno(a): 2019.2 
Disciplina: CCT0641 - FUNDAMENTOS DE BANCO DE DADOS 
 
 
 
 1a Questão 
 
 
Abaixo segue parte do esquema do banco de dados Shark, sabendo-se que os atributos em negrito e sublinhados são chaves 
primárias e os atributos em itálico são chaves estrangeiras: 
AREA (CODAREA, NOMEAREA) 
LOCAL (CODLOCAL, CODAREA, NOMELOCAL) 
TUBARAO (IDTUBARAO, IDESPECIE, COMPRIMENTO, SEXO) 
CAPTURA (NUMCAPTURA, IDEMB, IDTUBARAO, CODLOCAL, LATITUDE, LONGITUDE, DATA, TEMPAGUA) 
Assinale a alternativa abaixo que representa uma consulta que exiba todos os dados de áreas e locais ordenados decrescentemente 
pelo nome do local. 
 
 
 
 SELECT * FROM AREA A INNER JOIN LOCAL L ON A.CODAREA = L.CODAREA ORDER NOMELOCAL DESC; 
 SELECT * FROM AREA A, LOCAL L WHERE A.CODAREA = L.CODAREA ORDER BY NOMELOCAL DESC; 
 
 
SELECT * FROM AREA A, LOCAL L WHERE A.CODAREA = L.CODAREA ORDER NOMELOCAL DESC; 
 
 
 SELECT * FROM AREA A, LOCAL L WHERE A.CODAREA = L.CODAREA ORDER NOMELOCAL ASC; 
 
 
SELECT * FROM AREA A INNER JOIN LOCAL L WHERE A.CODAREA = L.CODAREA ORDER BY NOMELOCAL DESC; 
 
Respondido em 30/10/2019 13:59:40 
 
 
Explicação: 
PARA ORDENARMOS DE FORMA DESCRECENTE PRECISAMOS UTILIZAR ORDER BY DESC 
 
 
 
 
 2a Questão 
 
 
Baseado no modelo de banco de dados mostrado a seguir: 
CARRO(idcarro,placa,modelo,tipo,cor,ano,Km,valor,chassis,idfilial) 
ALUGUEL(NF,idcarro,idcliente,valor,CNH,dataIni,dataFim,idfuncionario) 
Mostre o tipo dos carros e quantos carros são do mesmo tipo: 
 
 
 SELECT tipo, count(*) FROM carro GROUP BY tipo; 
 
 
SELECT tipo, sum(tipo) FROM carro GROUP BY tipo; 
 
 
SELECT tipo, max(tipo) FROM carro GROUP BY tipo; 
 
 
SELECT tipo, count(*) FROM carro; 
 
 
SELECT tipo, sum(tipo) FROM carro GROUP BY sum(tipo); 
 
Respondido em 30/10/2019 13:59:47 
 
 
Explicação: 
Para a correta execução temos que contar utilizando count e agrupar utilizando Group By 
 
 
 
 
 3a Questão 
 
 
O retorno do valor médio de uma coluna contendo diversos números é possibilitado pela expressão SQL 
 
 
 
 
 SELECT column_name FROM table_name SETTING AVG 
 
 
SELECT AVG(column_name) FROM table_name 
 
 SELECT column_name (AVG) FROM table_name 
 
 SELECT AVG OF column_name FROM table_name 
 
 
 SELECT FROM table_name AVG(column_name) 
 
 
Respondido em 30/10/2019 13:59:50 
 
 
Explicação: 
A função AVG(X) retorna o valor médio da coluna x, ignorando os valores nulos. 
 
 
 
 
 4a Questão 
 
 
Considere a seguinte representação de uma tabela de um banco de dados relacional: 
Estoque (id, Item, Quantidade, Categoria) 
O comando SQL para se obter a soma dos valores do atributo Quantidade, agrupada por Categoria, apenas para as Categorias com 
Quantidade total superior a 50 unidades, é: 
 
 
 SELECT Categoria, SUM(Quantidade) FROM Estoque WHERE GROUP BY Categoria HAVING SUM(Quantidade) > 50 
 
 
SELECT GROUP (Categoria), COUNT (Quantidade) FROM Estoque WHERE Quantidade > 50 
 
 
 SELECT GROUP (Categoria), SUM (Quantidade) FROM Estoque WHERE Quantidade > 50 
 
 
SELECT Categoria, Quantidade FROM Estoque WHERE Quantidade > 50 GROUP BY Categoria 
 
 
SELECT Categoria, SUM (*) FROM Estoque GROUP BY Categoria HAVING SUM (*) > 50 
Respondido em 30/10/2019 13:59:59 
 
 
Explicação: 
Como é necessario filtrar os grupos temos que usar a clausula HAVING 
 
 
 
 
 5a Questão 
 
 
Considere a tabela definida pelo comando SQL abaixo. 
Create table func ( 
nome varchar(50) not null, 
salario numeric(9,2) not null, 
cod_depto int null); 
Considere a consulta SQL abaixo: 
Select nome, salario 
from func 
where salario > 900 
and cod_depto is not null 
order by salario 
O requisito abaixo que NÃO é atendido por esta consulta é: 
 
 
 
 listar a coluna NOME da tabela FUNC; 
 
 
 listar a coluna SALARIO da tabela FUNC; 
 
 apresentar o resultado em ordem alfabética. 
 
só considerar os registros que apresentem o atributo COD_DEPTO não nulo; 
 
 
 só considerar os registros que apresentem o atributo SALARIO maior que 900; 
 
Respondido em 30/10/2019 14:00:03 
 
 
Explicação: 
Como a ordenação foi realizada por uma coluna numerica não apresentara a ordem alfabetica crescente no resultado 
 
 
 
 
 6a Questão 
 
 
Em um modelo de dados que descreve a publicação acadêmica de pesquisadores de diferentes instituições em eventos acadêmicos, 
considere as tabelas abaixo. 
DEPARTAMENTO (CodDepartamento, NomeDepartamento) 
EMPREGADO (CodEmpregado, NomeEmpregado, CodDepartamento, Salario) 
Na linguagem SQL, o comando mais simples para recuperar os códigos dos departamentos cuja média salarial seja maior que 2000 
é 
 
 
 SELECT CodDepartamento, AVG (Salario) > 2000 FROM EMPREGADO GROUP BY CodDepartamento 
 
 SELECT CodDepartamento FROM EMPREGADO GROUP BY CodDepartamento HAVING AVG (Salario) > 2000 
 
 
SELECT CodDepartamento FROM EMPREGADO WHERE AVG (Salario) > 2000 
 
 
 SELECT CodDepartamento FROM EMPREGADO GROUP BY CodDepartamento ORDER BY AVG (Salario) > 2000 
 
SELECT CodDepartamento FROM EMPREGADO WHERE AVG (Salario) > 2000 GROUP BY CodDepartamento 
 
Respondido em 30/10/2019 14:00:07 
 
 
Explicação: 
Como temos que filtrar os grupo devemos utilizar a clausula HAVING