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