Baixe o app para aproveitar ainda mais
Prévia do material em texto
1. A criação de consultas em um banco de dados através do comando SELECT pode utilizar diversos recursos, ordenação, agrupamentos, filtros e outros. Um destes recursos, que permite consultas mais avançadas, é o uso de subconsultas em que um comando de SELECT pode conter um outro comando SELECT em alguma de suas outras cláusulas. Em um sistema de uma loja, imagine que existe uma tabela de COMPRAS com os seguintes dados. NOME DATA Renato Nogueira 12/03/2019 Renato Nogueira 21/03/2019 Renato Nogueira 25/04/2019 Rodrigo Gonçalves 14/03/2019 Rodrigo Gonçalves 04/04/2019 Vanessa Aquino 16/03/2019 Vanessa Aquino 10/04/2019 Fonte: Elaborado pelo Autor (2019) Para avaliar o volume de vendas dos clientes, o setor de marketing solicitou uma listagem com os clientes e o seu volume total de compras e ordenados pelo volume de compras em ordem decrescente. A consulta que reflete esta necessidade do setor de marketing é: Resposta correta. A alternativa está correta. Perceba que a subconsulta realiza a totalização de vendas e abrevia o somatório SUM(VLR_COMPRA) como TOTAL. Este campo é o empregado na ordenação com a palavra DESC, em ordem decrescente, os maiores primeiro. SELECT * FROM (SELECT NOME, SUM(VLR_COMPRA) as TOTAL FROM COMPRAS) AS VOLUME_COMPRAS ORDER BY VLR_COMPRA ASC SELECT * FROM (SELECT NOME, SUM(VLR_COMPRA) as TOTAL FROM COMPRAS) AS VOLUME_COMPRAS ORDER BY VLR_COMPRA DESC SELECT * FROM (SELECT NOME, AVG(VLR_COMPRA) as TOTAL FROM COMPRAS) AS VOLUME_COMPRAS ORDER BY TOTAL DESC SELECT * FROM (SELECT NOME, AVG(VLR_COMPRA) as TOTAL FROM COMPRAS) AS VOLUME_COMPRAS ORDER BY VLR_COMPRA DESC • SELECT * FROM (SELECT NOME, SUM(VLR_COMPRA) as TOTAL FROM COMPRAS) AS VOLUME_COMPRAS ORDER BY TOTAL DESC PRÓXIMA QUESTÃO 2. Uma cláusula “group by”, parte do comando SELECT, permite criar agrupamentos, isto é, vários registros com os mesmos valores são combinados em uma linha e os valores dos outros campos podem ser resumidos através de funções de agregação, gerando cálculo de totais, contagens, médias e outros. Em um sistema de livraria, existe uma tabela LIVRO que contém os seguintes campos: LIVRO (COD_LIVRO, TITULO, AUTOR, VALOR) Para recuperar a lista dos autores com o total de títulos de sua autoria presentes na livraria e o valor médio dos valores de seus títulos, a consulta deve ser: Resposta correta. A alternativa está correta pois o agrupamento (group by) ocorre por AUTOR que é o campo junto ao SELECT e é requisitado contagem e média por autor tratadas com as funções de contagem (COUNT(*) ) e a média (AVG(VALOR) ) aplicadas corretamente. SELECT AUTOR, COUNT(*), MEDIA(VALOR) FROM LIVRO GROUP BY AUTOR • SELECT AUTOR, COUNT(*), AVG(VALOR) FROM LIVRO GROUP BY AUTOR SELECT TITULO, SUM(*), AVG(VALOR) FROM LIVRO GROUP BY TITULO SELECT AUTOR, SUM(*), MEDIA(VALOR) FROM LIVRO GROUP BY AUTOR SELECT TITULO, COUNT(*), AVG(VALOR) FROM LIVRO GROUP BY TITULO PRÓXIMA QUESTÃO 3. Os bancos de dados permitem que dados básicos, provenientes dos processos operacionais de um negócio, possam ser processados e sumarizados para se obter informações de nível gerencial e estratégico. Por exemplo, a quantidade de carros locados por semana em uma locadora, a quantidade de alunos matriculados em uma escola, além de outras situações ilustram o que pode ser processado facilmente com consultas via SELECT. Uma determinada Fintech realiza empréstimos para pessoas de uma comunidade e a tabela EMPRESTIMO mostrada a seguir apresenta os registros de empréstimos realizados: CPF Data 02311220012 10/04/2019 91311770028 13/04/2019 84911560025 21/04/2019 73923560458 23/04/2019 64821569228 02/05/2019 A consulta que calcula o total de empréstimo em reais realizado pela Fintech é: Resposta correta. A alternativa está correta pois basta que seja usada a função SUM associada ao campo VALOR totalizando toda a tabela (sem group by). SELECT AVG(valor) from EMPRESTIMO SELECT SUM(valor) from EMPRESTIMO GROUP BY SEXO • SELECT SUM(valor) from EMPRESTIMO SELECT count(valor) from EMPRESTIMO SELECT count(valor) from EMPRESTIMO GROUP BY SEXO PRÓXIMA QUESTÃO 4. Dados em tabelas diferentes podem compor um conjunto de resultados em um comando de SELECT através das junções. Alguns tipos de junções são as junções internas e as junções externas, estas últimas podem ser pela esquerda ou pela direita. Em um sistema de uma universidade existe o cadastro de Alunos e o de Cursos, onde em aluno pode conter apenas um curso e em curso pode conter vários cursos. Em uma consulta foi feita uma junção (join) entre as tabelas Alunos e Cursos e na consulta SELECT, Alunos e Cursos estão escritas nesta ordem (Alunos primeiro, antes de Cursos). O resultado da consulta está expresso na tabela a seguir: Matrícula Nome C 322871 Joana Vieira 2 322609 Márcio Nogueira 2 212320 Cristiano Azevedo 1 212201 Lúcia Vergamini 1 NULL NULL 4 Quadro - Resultado de consulta com junção entre Alunos e Cursos Fonte: Elaborado pelo autor (2019). Qual foi a junção realizada nesta consulta? Resposta correta. A resposta está correta pois perceba que na última linha existe o curso Gestão Ambiental que não possui aluno correspondente, e o curso está a direita na escrita do SELECT porque aparece depois de aluno (está à esquerda). E se o campo de aluno ficou NULL é por que os valores direita prevaleceram (right outer join). Join Left Outer Join Full Join • Right Outer Join Inner Join PRÓXIMA QUESTÃO 5. O uso de agrupamentos é um recurso utilizado ao criar consultas com SELECT para sumarizar dados e realizar contabilizações ou totalizações, e a cláusula usada é o GROUP BY. Uma demanda comum é, ao realizar agrupamentos, realizar algum filtro sobre os campos calculados. Por exemplo, ao avaliar os clientes e o total de compras calculado via uma função SUM, pode-se querer filtrar apenas os clientes com este volume de compras acima de R$500,00. A palavra chave usada na cláusula que permite realizar este tipo de filtro sobre campos calculados por funções de agregação é a: Resposta correta. A alternativa está correta. A cláusula HAVING é a alternativa que se tem para realizar filtro sobre um campo calculado. Por exemplo, para o caso do exemplo, uma cláusula having seria “HAVING SUM(VLR_COMPRA) >= 500”. ORDER • HAVING WHERE INNER FROM PRÓXIMA QUESTÃO 6. O comando SELECT é bastante versátil e por meio das suas cláusulas de WHERE, ORDER BY, GROUP BY, JOIN permite especificar filtros, ordenações, agrupamentos e junções respectivamente. Estes e outros recursos oferecem suporte ao usuário para escrever suas consultas. Em relação a algumas das cláusulas, comandos e palavras chave para escrita dos comandos, realize a associação entre os itens a seguir e as afirmações na sequência: I. HAVING II. DESC III. AVG IV. LEFT Associe as funções de agregação com as afirmações sobre estes comandos: ( ) Permite especificar qual o tipo de junção deve ser executada ( ) Estabelece ordem decrescente na cláusula ORDER BY ( ) Função de agregação que pode ser usada com GROUP BY ( ) Permite editar filtros em consultas com GROUP BY Assinale a alternativa que apresenta a sequência correta: Resposta correta. A alternativa está correta. Comentando na sequência. O item IV, LEFT é usado junto comOUTER JOIN (LEFT OUTER JOIN) para especificar um certo tipo de junção. O item II (DESC) é usado com os campos na cláusula ORDER BY para especificar o ordenação decrescente. Caso a ordenação seja crescente, a palavra seria ASC. Item III (AVG) é de fato uma função de agregação para cálculo de média. E o item I (HAVING) permite filtrar valores provenientes de cálculo de função agregada em consultas que possuem o group by. I, III, II, IVI I, IV, II, III • IV, II, III, I II, III, I, IV III, I, IV, II PRÓXIMA QUESTÃO 7. O comando de SELECT é um dos comandos de DML (Data Manipulation Language) responsável por recuperar os registros de tabelas e ele possui vários recursos como filtros, ordenação, subconsultas e junções, além de outros e isso permite que este comando atenda às mais variadas necessidade de informação de seus usuários. Em um sistema de Locadora, um determinado gerente solicitou à equipe de Tecnologia de Informação uma listagem com o volume de locações de carros organizadas por modelo de carro. A listagem apresenta cada modelo e para cada modelo apresenta a quantidade de locações. A cláusula do comando SELECT que atende esta demanda de avaliar a quantidade de locações por modelo de carro é o: Resposta correta. A alternativa está correta, a cláusula de GROUP BY no comando de SELECT processa os agrupamentos em que os registros com o mesmo valor de modelo são agrupados e com a contabilização (COUNT) associado a algum outro campo. Portanto, para cada modelo serão contabilizadas as locações como requer o enunciado. RIGHT OUTER JOIN ORDER BY • GROUP BY FROM LIKE PRÓXIMA QUESTÃO 8. Uma visão (view) é um dos componentes que pode ser criado em um banco de dados junto com as tabelas, stored procedures, usuários e outros. Uma view, por ser um componente que ajuda a estruturar a forma como os dados são consultados, é definido por comandos de DDL e existe uma forma e comando específico para esta criação. Sobre o comando para criação de Views, analise as sentenças a seguir e assinale (V) para a(s) verdadeira(s) e (F) para a(s) falsa(s). I. ( ) O comando para a criação de uma view é o “ADD VIEW” II. ( ) Campos das views precisam ter os mesmos nomes da consulta usada para defini-la III. ( ) Ao ser criada, os dados da view são copiados para uma estrutura própria IV. ( ) Uma view pode ser criada com base em outra view A partir das associações feitas anteriormente, assinale a alternativa que apresenta a sequência correta: Resposta correta. A alternativa é a correta. Na sequência dos itens, o item I é falso, o comando para criação de view é “CREATE VIEW”, análogo à criação de tabela. O item II é falso, os campos das views podem ter nomes mais intuitivos, diferentes dos campos de tabelas que muitas vezes são “codificados”. O item III é falso, as views não possuem dados, elas simplesmente usam os dados das tabelas como se fosse uma “tabela virtual”. O item IV é verdadeiro, de fato uma view pode conter outra view em sua definição. F, V, V, V. V, F, F, V. F, F, F, F. • F, F, F, V. V, F, F, F. PRÓXIMA QUESTÃO 9. O comando SELECT pode conter várias cláusulas, por exemplo, para indicar as tabelas fonte dos dados (FROM), para estabelecer os filtros (WHERE), para ordenação dos dados (ORDER BY). Estas cláusulas e o emprego de diversos tipos de recursos torna este comando bastante útil para expressar as necessidades de informações de usuários de um banco de dados. A respeito dos recursos para construção de consultas avançadas com o SELECT, analise as sentenças a seguir e assinale (V) para a(s) verdadeira(s) e (F) para a(s) falsa(s): I. ( ) Subconsultas permitem que um comando de SELECT contenha outro comando de SELECT interno. Um exemplo, é usar subconsultas com um operador IN. II.( ) Os agrupamentos permitem resumir os dados agrupando registros, por exemplo, podemos agrupar os clientes por bairro e os bairros serão os agrupamentos III. ( ) Funções de agregação permite que os dados sejam consultados de forma mais simples, com um mecanismo análogo a uma tabela virtual IV. ( ) As junções são cálculos que permitem realizar por exemplo contabilizações, cálculo de média, maior valor e outros A partir das associações feitas anteriormente, assinale a alternativa que apresenta a sequência correta: Resposta correta. A alternativa está correta. O item I é verdadeiro pois subconsultas permite aninhar comandos SELECT, um comando SELECT pode conter outro mais interno e uma das formas usadas é de fato com o operador IN. O item II é verdadeiro pois agrupamentos resumem dados juntando registros com valores iguais nos campos do agrupamento e aplicando funções de agregação nos outros campos. O Item III é falso pois o mecanismo semelhante a uma tabela virtual que facilita o uso de consultas é uma VIEW e não as funções agregadas que servem para cálculos como totalização e contabilização. O item IV é falso pois as junções servem para combinar tabelas através das chaves estrangeiras. O recurso que realiza contabilizações são as funções de agregação. • V, V, F, F. F, F, V, V. F, F, V, F. V, V, F, V. F, F, F,F. PRÓXIMA QUESTÃO 10. A modelagem de um banco de dados permite compreender como as tabelas estão relacionadas entre si, permite identificar chaves primárias e as chaves estrangeiras envolvidas nos relacionamentos e assim serve de suporte para construção de consultas, especificamente para saber quais campos usar em junções. Em um banco de dados, a parte referente ao cadastro de produtos associado ao itens de compras (tabela PRODUTO_COMPRA) está mostrado a seguir. Fonte: Elaborado pelo Autor (2019) Em certo setor da empresa, houve a necessidade de recuperar todos os produtos (com sua descrição e a descrição da sua categoria) que possuem compra e apenas aqueles que de fato possuem compras associadas e que possuem a categoria cadastrada. A cláusula de junção após a palavra chave FROM na consulta deve ser: Resposta correta. A alternativa está correta pois pela especificação da consulta, que envolve recuperar todos os produtos e apenas os produtos que possuem compras associadas e com as categorias cadastradas deve ser expressa como INNER JOIN tanto entre as tabelas CATEGORIA e PRODUTO quanto também com PRODUTO_COMPRA e que está sendo feita nesta resposta. FROM (CATEGORIA as C RIGHT OUTER JOIN PRODUTO as P .ON C.COD_CATEGORIA = P.COD_CATEGORIA) RIGHT OUTER JOIN PODUTO_COMPRA AS PC ON P.COD_PRODUTO = PC.COD_PRODUTO) FROM (CATEGORIA as C LEFT OUTER JOIN PRODUTO as P .ON C.COD_CATEGORIA = P.COD_CATEGORIA) INNER JOIN PODUTO_COMPRA AS PC ON P.COD_PRODUTO = PC.COD_PRODUTO) FROM (CATEGORIA as C INNER JOIN PRODUTO as P .ON C.COD_CATEGORIA = P.COD_CATEGORIA) LEFT OUTER JOIN PODUTO_COMPRA AS PC ON P.COD_PRODUTO = PC.COD_PRODUTO) FROM (CATEGORIA as C RIGHT OUTER JOIN PRODUTO as P .ON C.COD_CATEGORIA = P.COD_CATEGORIA) INNER JOIN PODUTO_COMPRA AS PC ON P.COD_PRODUTO = PC.COD_PRODUTO) • FROM (CATEGORIA as C INNER JOIN PRODUTO as P .ON C.COD_CATEGORIA = P.COD_CATEGORIA) INNER JOIN PODUTO_COMPRA AS PC ON P.COD_PRODUTO = PC.COD_PRODUTO)
Compartilhar