Baixe o app para aproveitar ainda mais
Prévia do material em texto
1. Sabendo-se que existem dados de TCC cadastrados com datas de defesa que variam de 20/11/2012 até o dia de hoje, assinale qual das alternativas abaixo retornaria o mesmo resultado que o comando "SELECT * FROM TCC WHERE DTDEFESA IN ('21/11/2013', '22/11/2014');": SELECT * FROM TCC WHERE DTDEFESA BETWEEN '21/11/2013' AND '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA > '21/11/2013' AND < '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA = '21/11/2013' AND '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA => '21/11/2013' AND <= '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA BETWEEN ('21/11/2013'; '22/11/2014'); 2. Em um projeto lógico de um sistema foi identificado que um projeto é de um certo tipo. Assim, as relações abaixo foram definidas: TIPO_PROJETO (ID_TIPO, NOME) PROJETO (ID_PROJETO, NOME, DESCRICAO, ID_TIPO, VALOR) Conforme a linguagem SQL e as relações dadas, escolha a opção que mostre o nome do projeto e nome do seu tipo, dos projetos que não possuam valor, bem como dos tipos que possuam mais do que cinco projetos. SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND P.VALOR =0 AND TP.ID_TIPO IN (SELECT ID_TIPO FROM PROJETO GROUP BY ID_TIPO HAVING COUNT(*) > 5); SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND P.VALOR =0 AND TP.ID_TIPO = (SELECT ID_TIPO FROM PROJETO GROUP BY ID_TIPO HAVING COUNT(*) > 5); SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND P.VALOR =0 GROUP BY ID_TIPO HAVING COUNT(*) > 5; SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND VALOR IS NULL AND TP.ID_TIPO IN (SELECT ID_TIPO FROM TIPO_PROJETO GROUP BY ID_TIPO HAVING COUNT(*) > 5); SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND VALOR IS NULL AND TP.ID_TIPO IN (SELECT ID_TIPO FROM PROJETO GROUP BY ID_TIPO HAVING COUNT(*) > 5); Gabarito Coment. 3. 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, LOCAL L WHERE A.CODAREA = L.CODAREA ORDER NOMELOCAL DESC; SELECT * FROM AREA A INNER JOIN LOCAL L WHERE A.CODAREA = L.CODAREA ORDER BY NOMELOCAL DESC; SELECT * FROM AREA A, LOCAL L WHERE A.CODAREA = L.CODAREA ORDER NOMELOCAL ASC; 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; 4. Em relação as funções de grupo da linguagem SQL, marque a opção correta: SUM - contar o número de linhas. MAX - calcular a média aritmética. COUNT - retornar o maior valor dentre um grupo de valores. MIN - retornar o menor valor dentre um grupo de valores. AVG - somar um grupo de valores. Explicação: AVG(x) - Retorna o valor médio da coluna x. SUM(x) - Retorna a soma da coluna x. MAX(x) - Retorna o valor máximo da coluna x. MIN(x) - Retorna o valor mínimo da coluna x. COUNT(x) - Retorna o número de valores não nulos da coluna x. 5. Dada as tabelas: Pedido(Nr_pedido, Id_cliente, valor_total, data) Cliente(Id_cliente, nome, endereço, bairro, email, telefone), assinale a instrução em SQL que lista os clientes que possuem email do gmail. select nome from cliente where email like *@gmail.com select nome from cliente where email = ¿*@gmail.com select nome from cliente where email like @gmail.com* select nome from cliente where email like *gmail* select nome from cliente where email in *@gmail.com 6. A linguagem de banco de dados que é aceita em quase todos os Sistemas de Gerenciamento de Banco de Dados (SGBDs) é a SQL. Dessa forma, utilizando esta linguagem para conseguir filtrar valores resultantes de expressões agregadas, deve-se adicionar ao comando SQL a cláusula: SUM HAVING AVG WHERE SELECT Explicação: Having: A cláusula having só é usada quando se deseja especificar um critério de pesquisa para um grupo ou uma agregação. HAVING pode ser usado somente com a instrução SELECT. HAVING é usado normalmente em uma cláusula GROUP BY. SUM: A função sum(x) retorna a soma da coluna x. Where: A cláusula Where estabelece uma condição que a linha deverá obedecer para que faça parte do conjunto resposta da consulta. No caso apenas retornam as linhas cujo deste da condição de como resposta verdadeiro. Select: Comando utilizado para recuperação dos dados de uma ou mais tabelas. AVG: A função avg(x) retorna o valor médio da coluna x. Gabarito Coment. 7. Considere a tabela definida pelo comando SQL abaixo. Create table func ( nome varchar(50) not null, salario money not null, cod_depto int null); Considere a consulta SQL abaixo: Select nome, salario from func where salario > 900 and not cod_depto is null order by salario O requisito abaixo que não é atendido por esta consulta é: só considerar os registros que apresentem o atributo SALARIO maior que 900; 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; listar a coluna NOME da tabela FUNC; Gabarito Coment. 8. De acordo com a estrutura das tabelas abaixo, escolha a opção que mostre o nome do empregado, o nome do seu departamento, daquele que trabalha em departamento que possua mais do que cinco empregados e cujo salário seja superior a média salarial do seu departamento, através da linguagem SQL. O banco de dados é composto por 2 tabelas: a tabela EMP que contém dados dos empregados, cuja chave primária é MATRICULA e a tabela DEPT que contém dados dos departamentos, cuja a chave primária é DEPTNO. A coluna GERENTE é chave estrangeira na tabela EMP, referente à própria tabela EMP. A coluna DEPTNO na tabela EMP é chave estrangeira, referente à tabela DEPT. ESTRUTURA DAS TABELAS DO BANCO DE DADOS TABELA EMP Name Null Type ---------------------------------------------- MATRICULA NOT NULL NUMBER(4) NOME_EMP CHAR(10) CARGO CHAR (9) GERENTE NUMBER(4) SALARIO NUMBER(7,2) COMISSAO NUMBER(7,2) DEPTNO NUMBER(2) TABELA DEPT Name Null Type ---------------------------------------------- DEPTNO NOT NULL NUMBER(2) NOME_DEPT CHAR(14) LOCALIZACAO CHAR(13) SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND COUNT(D.DEPTNO) > 5 AND E.SALARIO> (SELECT AVG(SALARIO) FROM EMP WHERE DEPTNO=E.DEPTNO); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND D.DEPTNO IN (SELECT DEPTNO FROM EMP GROUP BY DEPTNO HAVING COUNT(*)> 5) AND E.SALARIO>(SELECT AVG(SALARIO) FROM EMP); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND D.DEPTNO IN (SELECT DEPTNO FROM EMP GROUP BYDEPTNO HAVING COUNT(*)> 5) AND E.SALARIO>AVG(SALARIO); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO GROUP BY DEPTNO HAVING COUNT(*)> 5 AND E.SALARIO>(SELECT AVG(SALARIO) FROM EMP WHERE DEPTNO=E.DEPTNO); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND D.DEPTNO IN (SELECT DEPTNO FROM EMP GROUP BY DEPTNO HAVING COUNT(*)> 5) AND E.SALARIO>(SELECT AVG(SALARIO) FROM EMP WHERE DEPTNO=E.DEPTNO); Gabarito Coment. Não Respondida Não Gravada Gravada Exercício inciado em 09/05/2020 00:29:51. 1. Qual o comando SQL deve ser utilizado para definir o resultado da seguinte situação: "Ao final do mês é preciso apresentar o total de vendas de clientes por venda". FROM ORDER BY WHERE GROUP BY HAVING 2. Em nosso Banco de Dados temos a tabela denominada Estoq_Regiao conforme a figura abaixo. Queremos listar o conteúdo dessa tabela em ordem de quantidade (Qtde) de forma descendente. Assinale a alternativa que apresenta a instrução SQL correta: SELECT Estoq_Regiao INTO Regiao, Qtde, Vl_Unit ORDER DESC BY Qtde SELECT Regiao, Qtde, Vl_Unit FROM Estoq_Regiao ORDER DESC BY Qtde ORDER DESC BY Qtde FROM Estoq_Regiao SELECT Regiao, Qtde, Vl_Unit SELECT Regiao, Qtde, Vl_Unit FROM Estoq_Regiao ORDER BY Qtde DESC ORDER BY Qtde DESC SELECT Regiao, Qtde, Vl_Unit FROM Estoq_Regiao 3. 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 FROM EMPREGADO WHERE AVG (Salario) > 2000 SELECT CodDepartamento FROM EMPREGADO WHERE AVG (Salario) > 2000 GROUP BY CodDepartamento SELECT CodDepartamento FROM EMPREGADO GROUP BY CodDepartamento ORDER BY AVG (Salario) > 2000 SELECT CodDepartamento, AVG (Salario) > 2000 FROM EMPREGADO GROUP BY CodDepartamento SELECT CodDepartamento FROM EMPREGADO GROUP BY CodDepartamento HAVING AVG (Salario) > 2000 4. Considere as seguintes tabelas de um banco de dados: 1) Fornecedor (cod_fornec, nome_fornec, telefone, cidade, UF) 2) Estado (UF, nome_estado) A expressão SQL que obtém os nomes dos estados para os quais não há fornecedores cadastrados e: SELECT E.UF FROM Estado AS E WHERE E.nome_estado NOT IN (SELECT F.UF FROM Fornecedor AS F); SELECT E.nome_estado FROM Estado AS E WHERE E.UF IN (SELECT F.UF FROM Fornecedor AS F); SELECT E.nome_estado FROM Estado AS E, FROM Fornecedor AS F WHERE E.UF = F.UF; SELECT E.nome_estado FROM Estado AS E, FROM Fornecedor AS F WHERE E.nome_estado = F.UF; SELECT E.nome_estado FROM Estado AS E WHERE E.UF NOT IN (SELECT F.UF FROM Fornecedor AS F); Gabarito Coment. 5. Assinale a alternativa que selecione todos os clientes cujo código NÃO esteja entre 50 e 75. Nenhuma alternativa estão corretas SELECT * FROM Cliente Where cliente_id = 50 AND 75; SELECT * FROM Cliente Where cliente_id NOT BETWEEN 50 OR 75; SELECT * FROM Cliente Where cliente_id NOT BETWEEN 50 AND 75; SELECT * FROM Cliente Where cliente_id BETWEEN 50 AND 75; 6. O retorno do valor médio de uma coluna contendo diversos números é possibilitado pela expressão SQL SELECT FROM table_name AVG(column_name) SELECT AVG OF column_name FROM table_name SELECT column_name (AVG) FROM table_name SELECT column_name FROM table_name SETTING AVG SELECT AVG(column_name) FROM table_name Explicação: A função AVG(X) retorna o valor médio da coluna x, ignorando os valores nulos. Exemplo: select AVG(salario) from funcionario 7. Assinale a opção que exibirá para cada valor armazenado na coluna chamada C1 da tabela T1 a quantidade de vezes que este valor aparece repetido. Select C1 from T1 Select C1, sum(C1) from T1 group by C1 Select C1, count(C1) from T1 group by C1 Select C1, from T1 group by count(*) Select C1, count(C1) from T1 having count(C1) Explicação: Analisando a proposta da consulta: - Para obter a quantidade de vezes que um valor aparece repetido precisamos trabalhar com: - Função count(x) ¿ retorna o número de valores não nuos da coluna x. - Group by ¿ permite agruparmos nossos dados, produzindo uma linha sumarizada para cada grupo de linhas selecionado. Sendo assim, o commando correto é: Select C1, count(C1) from T1 group by C1 Gabarito Coment. 8. Baseado no modelo de banco de dados mostrado a seguir: FILIAL(idfilial(PK), nome, cidade,endereço,telefone) FUNCIONARIO(idfuncionario(PK),nome,endereço,telefone,salario,idfilial) CLIENTE(idcliente(PK),nome,cpf,endereço,telefone,cidade) CLIENTE_ESPECIAL(idcliente(PK),Km,desconto) CARRO(idcarro(PK),placa,modelo,tipo,cor,ano,Km,valor,chassis,idfilial) ALUGUEL(NF(PK),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; SELECT tipo, sum(tipo) FROM carro GROUP BY sum(tipo); SELECT tipo, sum(tipo) FROM carro GROUP BY tipo; SELECT tipo, count(*) FROM carro GROUP BY tipo; SELECT tipo, max(tipo) FROM carro GROUP BY tipo; Não Respondida Não Gravada Gravada Exercício inciado em 09/05/2020 00:31:42. 1. Baseado no modelo de banco de dados mostrado a seguir: FILIAL(idfilial(PK), nome, cidade,endereço,telefone) FUNCIONARIO(idfuncionario(PK),nome,endereço,telefone,salario,idfilial) CLIENTE(idcliente(PK),nome,cpf,endereço,telefone,cidade) CLIENTE_ESPECIAL(idcliente(PK),Km,desconto) CARRO(idcarro(PK),placa,modelo,tipo,cor,ano,Km,valor,chassis,idfilial) ALUGUEL(NF(PK),idcarro,idcliente,valor,CNH,dataIni,dataFim,idfuncionario) O nome das filias e a quantidade de funcionários que cada filial possui, mostre somente filias com mais de 10 funcionários? SELECT fi.nome Filial, count(*) Quantidade FROM filial fi, funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi INNER JOIN funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi LEFT JOIN funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi INNER JOIN funcionário fu ON fi.idfilial=fu.idfilial; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi RIGHT JOIN funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; 2. Dentro da definição a seguir podemos afirmar que ¿Um valor NULL indica que o valor é desconhecido. Um valor NULL é diferente de um valor vazio ou zero. Dois valores nulos não são iguais. Comparações entre dois valores nulos, ou entre um NULL e qualquer outro valor, retornam unknown porque o valor de cada NULL é desconhecido¿. Considerando esta definição, é correto afirmar que: A definição está certa. A definição está errada quando fala que ¿NULL indica que o valor é desconhecido¿. A definição está errada quando fala que ¿Um valor NULL é diferente de um valor vazio ouzero¿. A definição está errada quando fala que ¿o valor de cada NULL é desconhecido¿. A definição está errada porque NULL é vazio. 3. - Considere o banco de dados relacional de uma clínica médica, no qual as chaves primárias (incrementada automaticamente) e estrangeiras estão sublinhadas. *Obs. A numeração automática iniciará com 1. PACIENTE (id_pac, nome_pac, sexo, fone_pac) ESPECIALIDADE (id_espec, nome_espec) MEDICO (id_med, nome_med, fone_med, id_espec) CONSULTA (id_cons, dt_cons, vl_cons, id_pac, id_med) Dê o comando correspondente de Selecionar o maior valor de consulta. Select * From CONSULTA Select vl_cons From CONSULTA Select MIN(vl_cons) From CONSULTA Select SUM(vl_cons) From CONSULTA Select MAX(vl_cons) From CONSULTA 4. Sobre os tipos de funções de um SGBD, marque a opção correta: COUNT realiza da função de retornar o menor valor dentre um grupo de valores. AVG realiza da função de somar um grupo de valores. SUM realiza da função de contar o número de linhas. MAX realiza da função de retornar o maior valor dentre um grupo de valores. MIN realiza da função de calcular a média aritmética. 5. Considere o esquema de uma empresa conforme segue: Func (cod_func, nome, dta_nasc, salario, nro_depto, cod_superv) ; Depto (nro_depto, nome) ; Projeto (cod_proj, nome, duracao, nro_depto) ; Participa (cod_proj, cod_func, horas_trab). Marque a alternativa que contém o comando em SQL para recuperar o nome e o salário dos funcionários do departamento 5, com salário na faixa entre 1000 e 2000. SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5 OR SALARIO BETWEEN 1000 AND 2000; SELECT NOME, SALARIO FROM FUNC WHERE SALARIO = 1000 AND NRO_DEPTO BETWEEN 1 AND 5; SELECT NOME, SALARIO FROM FUNC WHERE SALARIO BETWEEN 1000 AND 2000; SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5; SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5 AND SALARIO BETWEEN 1000 AND 2000; Explicação: SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5 AND SALARIO BETWEEN 1000 AND 2000; 6. Assinale a opção que apresenta somente funções de grupo GROUP BY, COMMIT e ROLLBACK LIKE, INTERSECT e DISTINCT COUNT, ORDER BY e USING MIN, AVG e SUM UNION, COUNT e MIN Gabarito Coment. 7. Com relação à cláusula HAVING usada no comando SQL (Structured Query Language), qual a opção correta que tem referência direta com esta cláusula? values group by distinct where order by Gabarito Coment. 8. Assinale a alternativa que selecione todos os clientes que terminem com o nome 'Morais' Select * From Cliente Where nome like '%Mor' Select * From Cliente Where nome <> 'Morais' Select * From Cliente Where nome like '%M%' Select * From Cliente Where nome like '%M' Select * From Cliente Where nome like '%Morais' Não Respondida Não Gravada Gravada Exercício inciado em 09/05/2020 00:32:58. 1. Em SQL, as funções de grupo opeam sobre conjuntos de linhas. Marque a opção correta: AVG - calcular a média aritmética. SUM - contar o número de linhas. COUNT - retornar o maior valor dentre um grupo de valores. MAX - retornar o menor valor dentre um grupo de valores. MIN - somar um grupo de valores. Explicação: AVG(x) - Retorna o valor médio da coluna x. SUM(x) - Retorna a soma da coluna x. MAX(x) - Retorna o valor máximo da coluna x. MIN(x) - Retorna o valor mínimo da coluna x. COUNT(x) - Retorna o número de valores não nulos da coluna x. 2. Dada as tabelas: Pedido(Nr_pedido, Id_cliente, valor_total, data) Cliente(Id_cliente, nome, endereço, bairro, email, telefone), assinale a instrução em SQL que lista os clientes que possuem email do gmail. select nome from cliente where email like *gmail* select nome from cliente where email = ¿*@gmail.com select nome from cliente where email in *@gmail.com select nome from cliente where email like @gmail.com* select nome from cliente where email like *@gmail.com 3. Em relação as funções de grupo da linguagem SQL, marque a opção correta: SUM - contar o número de linhas. COUNT - retornar o maior valor dentre um grupo de valores. AVG - somar um grupo de valores. MIN - retornar o menor valor dentre um grupo de valores. MAX - calcular a média aritmética. Explicação: AVG(x) - Retorna o valor médio da coluna x. SUM(x) - Retorna a soma da coluna x. MAX(x) - Retorna o valor máximo da coluna x. MIN(x) - Retorna o valor mínimo da coluna x. COUNT(x) - Retorna o número de valores não nulos da coluna x. 4. 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, LOCAL L WHERE A.CODAREA = L.CODAREA ORDER NOMELOCAL DESC; SELECT * FROM AREA A INNER JOIN LOCAL L WHERE A.CODAREA = L.CODAREA ORDER BY NOMELOCAL DESC; SELECT * FROM AREA A, LOCAL L WHERE A.CODAREA = L.CODAREA ORDER NOMELOCAL ASC; 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; 5. Sabendo-se que existem dados de TCC cadastrados com datas de defesa que variam de 20/11/2012 até o dia de hoje, assinale qual das alternativas abaixo retornaria o mesmo resultado que o comando "SELECT * FROM TCC WHERE DTDEFESA IN ('21/11/2013', '22/11/2014');": SELECT * FROM TCC WHERE DTDEFESA => '21/11/2013' AND <= '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA BETWEEN ('21/11/2013'; '22/11/2014'); SELECT * FROM TCC WHERE DTDEFESA > '21/11/2013' AND < '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA = '21/11/2013' AND '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA BETWEEN '21/11/2013' AND '22/11/2014'; 6. Em um projeto lógico de um sistema foi identificado que um projeto é de um certo tipo. Assim, as relações abaixo foram definidas: TIPO_PROJETO (ID_TIPO, NOME) PROJETO (ID_PROJETO, NOME, DESCRICAO, ID_TIPO, VALOR) Conforme a linguagem SQL e as relações dadas, escolha a opção que mostre o nome do projeto e nome do seu tipo, dos projetos que não possuam valor, bem como dos tipos que possuam mais do que cinco projetos. SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND P.VALOR =0 AND TP.ID_TIPO IN (SELECT ID_TIPO FROM PROJETO GROUP BY ID_TIPO HAVING COUNT(*) > 5); SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND P.VALOR =0 AND TP.ID_TIPO = (SELECT ID_TIPO FROM PROJETO GROUP BY ID_TIPO HAVING COUNT(*) > 5); SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND VALOR IS NULL AND TP.ID_TIPO IN (SELECT ID_TIPO FROM TIPO_PROJETO GROUP BY ID_TIPO HAVING COUNT(*) > 5); SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND P.VALOR =0 GROUP BY ID_TIPO HAVING COUNT(*) > 5; SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETOP WHERE TP.ID_TIPO = P.ID_TIPO AND VALOR IS NULL AND TP.ID_TIPO IN (SELECT ID_TIPO FROM PROJETO GROUP BY ID_TIPO HAVING COUNT(*) > 5); Gabarito Coment. 7. A linguagem de banco de dados que é aceita em quase todos os Sistemas de Gerenciamento de Banco de Dados (SGBDs) é a SQL. Dessa forma, utilizando esta linguagem para conseguir filtrar valores resultantes de expressões agregadas, deve-se adicionar ao comando SQL a cláusula: WHERE SUM AVG SELECT HAVING Explicação: Having: A cláusula having só é usada quando se deseja especificar um critério de pesquisa para um grupo ou uma agregação. HAVING pode ser usado somente com a instrução SELECT. HAVING é usado normalmente em uma cláusula GROUP BY. SUM: A função sum(x) retorna a soma da coluna x. Where: A cláusula Where estabelece uma condição que a linha deverá obedecer para que faça parte do conjunto resposta da consulta. No caso apenas retornam as linhas cujo deste da condição de como resposta verdadeiro. Select: Comando utilizado para recuperação dos dados de uma ou mais tabelas. AVG: A função avg(x) retorna o valor médio da coluna x. Gabarito Coment. 8. Considere a tabela definida pelo comando SQL abaixo. Create table func ( nome varchar(50) not null, salario money not null, cod_depto int null); Considere a consulta SQL abaixo: Select nome, salario from func where salario > 900 and not cod_depto is null order by salario O requisito abaixo que não é atendido por esta consulta é: listar a coluna NOME da tabela FUNC; só considerar os registros que apresentem o atributo SALARIO maior que 900; apresentar o resultado em ordem alfabética. listar a coluna SALARIO da tabela FUNC; só considerar os registros que apresentem o atributo COD_DEPTO não nulo; Gabarito Coment. Não Respondida Não Gravada Gravada Exercício inciado em 09/05/2020 00:34:20. 1. De acordo com a estrutura das tabelas abaixo, escolha a opção que mostre o nome do empregado, o nome do seu departamento, daquele que trabalha em departamento que possua mais do que cinco empregados e cujo salário seja superior a média salarial do seu departamento, através da linguagem SQL. O banco de dados é composto por 2 tabelas: a tabela EMP que contém dados dos empregados, cuja chave primária é MATRICULA e a tabela DEPT que contém dados dos departamentos, cuja a chave primária é DEPTNO. A coluna GERENTE é chave estrangeira na tabela EMP, referente à própria tabela EMP. A coluna DEPTNO na tabela EMP é chave estrangeira, referente à tabela DEPT. ESTRUTURA DAS TABELAS DO BANCO DE DADOS TABELA EMP Name Null Type ---------------------------------------------- MATRICULA NOT NULL NUMBER(4) NOME_EMP CHAR(10) CARGO CHAR (9) GERENTE NUMBER(4) SALARIO NUMBER(7,2) COMISSAO NUMBER(7,2) DEPTNO NUMBER(2) TABELA DEPT Name Null Type ---------------------------------------------- DEPTNO NOT NULL NUMBER(2) NOME_DEPT CHAR(14) LOCALIZACAO CHAR(13) SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND D.DEPTNO IN (SELECT DEPTNO FROM EMP GROUP BY DEPTNO HAVING COUNT(*)> 5) AND E.SALARIO>AVG(SALARIO); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO GROUP BY DEPTNO HAVING COUNT(*)> 5 AND E.SALARIO>(SELECT AVG(SALARIO) FROM EMP WHERE DEPTNO=E.DEPTNO); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND D.DEPTNO IN (SELECT DEPTNO FROM EMP GROUP BY DEPTNO HAVING COUNT(*)> 5) AND E.SALARIO>(SELECT AVG(SALARIO) FROM EMP WHERE DEPTNO=E.DEPTNO); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND D.DEPTNO IN (SELECT DEPTNO FROM EMP GROUP BY DEPTNO HAVING COUNT(*)> 5) AND E.SALARIO>(SELECT AVG(SALARIO) FROM EMP); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND COUNT(D.DEPTNO) > 5 AND E.SALARIO> (SELECT AVG(SALARIO) FROM EMP WHERE DEPTNO=E.DEPTNO); Gabarito Coment. 2. Qual o comando SQL deve ser utilizado para definir o resultado da seguinte situação: "Ao final do mês é preciso apresentar o total de vendas de clientes por venda". HAVING FROM WHERE GROUP BY ORDER BY 3. 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 FROM EMPREGADO GROUP BY CodDepartamento ORDER BY AVG (Salario) > 2000 SELECT CodDepartamento FROM EMPREGADO WHERE AVG (Salario) > 2000 GROUP BY CodDepartamento SELECT CodDepartamento FROM EMPREGADO GROUP BY CodDepartamento HAVING AVG (Salario) > 2000 SELECT CodDepartamento FROM EMPREGADO WHERE AVG (Salario) > 2000 SELECT CodDepartamento, AVG (Salario) > 2000 FROM EMPREGADO GROUP BY CodDepartamento 4. Em nosso Banco de Dados temos a tabela denominada Estoq_Regiao conforme a figura abaixo. Queremos listar o conteúdo dessa tabela em ordem de quantidade (Qtde) de forma descendente. Assinale a alternativa que apresenta a instrução SQL correta: SELECT Regiao, Qtde, Vl_Unit FROM Estoq_Regiao ORDER BY Qtde DESC SELECT Estoq_Regiao INTO Regiao, Qtde, Vl_Unit ORDER DESC BY Qtde ORDER BY Qtde DESC SELECT Regiao, Qtde, Vl_Unit FROM Estoq_Regiao SELECT Regiao, Qtde, Vl_Unit FROM Estoq_Regiao ORDER DESC BY Qtde ORDER DESC BY Qtde FROM Estoq_Regiao SELECT Regiao, Qtde, Vl_Unit 5. Considere as seguintes tabelas de um banco de dados: 1) Fornecedor (cod_fornec, nome_fornec, telefone, cidade, UF) 2) Estado (UF, nome_estado) A expressão SQL que obtém os nomes dos estados para os quais não há fornecedores cadastrados e: SELECT E.UF FROM Estado AS E WHERE E.nome_estado NOT IN (SELECT F.UF FROM Fornecedor AS F); SELECT E.nome_estado FROM Estado AS E, FROM Fornecedor AS F WHERE E.nome_estado = F.UF; SELECT E.nome_estado FROM Estado AS E, FROM Fornecedor AS F WHERE E.UF = F.UF; SELECT E.nome_estado FROM Estado AS E WHERE E.UF IN (SELECT F.UF FROM Fornecedor AS F); SELECT E.nome_estado FROM Estado AS E WHERE E.UF NOT IN (SELECT F.UF FROM Fornecedor AS F); Gabarito Coment. 6. Assinale a alternativa que selecione todos os clientes cujo código NÃO esteja entre 50 e 75. SELECT * FROM Cliente Where cliente_id NOT BETWEEN 50 OR 75; Nenhuma alternativa estão corretas SELECT * FROM Cliente Where cliente_id BETWEEN 50 AND 75; SELECT * FROM Cliente Where cliente_id NOT BETWEEN 50 AND 75; SELECT * FROM Cliente Where cliente_id = 50 AND 75; 7. Baseado no modelo de banco de dados mostrado a seguir: FILIAL(idfilial(PK), nome, cidade,endereço,telefone) FUNCIONARIO(idfuncionario(PK),nome,endereço,telefone,salario,idfilial) CLIENTE(idcliente(PK),nome,cpf,endereço,telefone,cidade) CLIENTE_ESPECIAL(idcliente(PK),Km,desconto) CARRO(idcarro(PK),placa,modelo,tipo,cor,ano,Km,valor,chassis,idfilial)ALUGUEL(NF(PK),idcarro,idcliente,valor,CNH,dataIni,dataFim,idfuncionario) Mostre o tipo dos carros e quantos carros são do mesmo tipo: SELECT tipo, sum(tipo) FROM carro GROUP BY sum(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; 8. O retorno do valor médio de uma coluna contendo diversos números é possibilitado pela expressão SQL SELECT AVG(column_name) FROM table_name SELECT column_name FROM table_name SETTING AVG SELECT AVG OF column_name FROM table_name SELECT FROM table_name AVG(column_name) SELECT column_name (AVG) FROM table_name Explicação: A função AVG(X) retorna o valor médio da coluna x, ignorando os valores nulos. Exemplo: select AVG(salario) from funcionario Não Respondida Não Gravada Gravada Exercício inciado em 09/05/2020 00:35:37. 1. Assinale a opção que exibirá para cada valor armazenado na coluna chamada C1 da tabela T1 a quantidade de vezes que este valor aparece repetido. Select C1, count(C1) from T1 having count(C1) Select C1, count(C1) from T1 group by C1 Select C1 from T1 Select C1, from T1 group by count(*) Select C1, sum(C1) from T1 group by C1 Explicação: Analisando a proposta da consulta: - Para obter a quantidade de vezes que um valor aparece repetido precisamos trabalhar com: - Função count(x) ¿ retorna o número de valores não nuos da coluna x. - Group by ¿ permite agruparmos nossos dados, produzindo uma linha sumarizada para cada grupo de linhas selecionado. Sendo assim, o commando correto é: Select C1, count(C1) from T1 group by C1 Gabarito Coment. 2. Dentro da definição a seguir podemos afirmar que ¿Um valor NULL indica que o valor é desconhecido. Um valor NULL é diferente de um valor vazio ou zero. Dois valores nulos não são iguais. Comparações entre dois valores nulos, ou entre um NULL e qualquer outro valor, retornam unknown porque o valor de cada NULL é desconhecido¿. Considerando esta definição, é correto afirmar que: A definição está errada quando fala que ¿o valor de cada NULL é desconhecido¿. A definição está certa. A definição está errada quando fala que ¿NULL indica que o valor é desconhecido¿. A definição está errada quando fala que ¿Um valor NULL é diferente de um valor vazio ou zero¿. A definição está errada porque NULL é vazio. 3. Baseado no modelo de banco de dados mostrado a seguir: FILIAL(idfilial(PK), nome, cidade,endereço,telefone) FUNCIONARIO(idfuncionario(PK),nome,endereço,telefone,salario,idfilial) CLIENTE(idcliente(PK),nome,cpf,endereço,telefone,cidade) CLIENTE_ESPECIAL(idcliente(PK),Km,desconto) CARRO(idcarro(PK),placa,modelo,tipo,cor,ano,Km,valor,chassis,idfilial) ALUGUEL(NF(PK),idcarro,idcliente,valor,CNH,dataIni,dataFim,idfuncionario) O nome das filias e a quantidade de funcionários que cada filial possui, mostre somente filias com mais de 10 funcionários? SELECT fi.nome Filial, count(*) Quantidade FROM filial fi INNER JOIN funcionário fu ON fi.idfilial=fu.idfilial; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi LEFT JOIN funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi INNER JOIN funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi, funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi RIGHT JOIN funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; 4. Considere o esquema de uma empresa conforme segue: Func (cod_func, nome, dta_nasc, salario, nro_depto, cod_superv) ; Depto (nro_depto, nome) ; Projeto (cod_proj, nome, duracao, nro_depto) ; Participa (cod_proj, cod_func, horas_trab). Marque a alternativa que contém o comando em SQL para recuperar o nome e o salário dos funcionários do departamento 5, com salário na faixa entre 1000 e 2000. SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5; SELECT NOME, SALARIO FROM FUNC WHERE SALARIO BETWEEN 1000 AND 2000; SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5 AND SALARIO BETWEEN 1000 AND 2000; SELECT NOME, SALARIO FROM FUNC WHERE SALARIO = 1000 AND NRO_DEPTO BETWEEN 1 AND 5; SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5 OR SALARIO BETWEEN 1000 AND 2000; Explicação: SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5 AND SALARIO BETWEEN 1000 AND 2000; 5. Assinale a opção que apresenta somente funções de grupo LIKE, INTERSECT e DISTINCT COUNT, ORDER BY e USING GROUP BY, COMMIT e ROLLBACK MIN, AVG e SUM UNION, COUNT e MIN Gabarito Coment. 6. Com relação à cláusula HAVING usada no comando SQL (Structured Query Language), qual a opção correta que tem referência direta com esta cláusula? order by where group by values distinct Gabarito Coment. 7. Sobre os tipos de funções de um SGBD, marque a opção correta: COUNT realiza da função de retornar o menor valor dentre um grupo de valores. MAX realiza da função de retornar o maior valor dentre um grupo de valores. SUM realiza da função de contar o número de linhas. MIN realiza da função de calcular a média aritmética. AVG realiza da função de somar um grupo de valores. 8. - Considere o banco de dados relacional de uma clínica médica, no qual as chaves primárias (incrementada automaticamente) e estrangeiras estão sublinhadas. *Obs. A numeração automática iniciará com 1. PACIENTE (id_pac, nome_pac, sexo, fone_pac) ESPECIALIDADE (id_espec, nome_espec) MEDICO (id_med, nome_med, fone_med, id_espec) CONSULTA (id_cons, dt_cons, vl_cons, id_pac, id_med) Dê o comando correspondente de Selecionar o maior valor de consulta. Select * From CONSULTA Select MAX(vl_cons) From CONSULTA Select MIN(vl_cons) From CONSULTA Select vl_cons From CONSULTA Select SUM(vl_cons) From CONSULTA Não Respondida Não Gravada Gravada Exercício inciado em 09/05/2020 00:37:15. 1. Assinale a alternativa que selecione todos os clientes que terminem com o nome 'Morais' Select * From Cliente Where nome like '%M' Select * From Cliente Where nome like '%Morais' Select * From Cliente Where nome like '%Mor' Select * From Cliente Where nome <> 'Morais' Select * From Cliente Where nome like '%M%' 2. Considere a tabela definida pelo comando SQL abaixo. Create table func ( nome varchar(50) not null, salario money not null, cod_depto int null); Considere a consulta SQL abaixo: Select nome, salario from func where salario > 900 and not cod_depto is null order by salario O requisito abaixo que não é atendido por esta consulta é: apresentar o resultado em ordem alfabética. listar a coluna NOME da tabela FUNC; 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; listar a coluna SALARIO da tabela FUNC; Gabarito Coment. 3. Dada as tabelas: Pedido(Nr_pedido, Id_cliente, valor_total, data) Cliente(Id_cliente, nome, endereço, bairro, email, telefone), assinale a instruçãoem SQL que lista os clientes que possuem email do gmail. select nome from cliente where email like @gmail.com* select nome from cliente where email like *gmail* select nome from cliente where email like *@gmail.com select nome from cliente where email = ¿*@gmail.com select nome from cliente where email in *@gmail.com 4. A linguagem de banco de dados que é aceita em quase todos os Sistemas de Gerenciamento de Banco de Dados (SGBDs) é a SQL. Dessa forma, utilizando esta linguagem para conseguir filtrar valores resultantes de expressões agregadas, deve-se adicionar ao comando SQL a cláusula: WHERE SELECT HAVING AVG SUM Explicação: Having: A cláusula having só é usada quando se deseja especificar um critério de pesquisa para um grupo ou uma agregação. HAVING pode ser usado somente com a instrução SELECT. HAVING é usado normalmente em uma cláusula GROUP BY. SUM: A função sum(x) retorna a soma da coluna x. Where: A cláusula Where estabelece uma condição que a linha deverá obedecer para que faça parte do conjunto resposta da consulta. No caso apenas retornam as linhas cujo deste da condição de como resposta verdadeiro. Select: Comando utilizado para recuperação dos dados de uma ou mais tabelas. AVG: A função avg(x) retorna o valor médio da coluna x. Gabarito Coment. 5. Em SQL, as funções de grupo opeam sobre conjuntos de linhas. Marque a opção correta: MIN - somar um grupo de valores. AVG - calcular a média aritmética. MAX - retornar o menor valor dentre um grupo de valores. COUNT - retornar o maior valor dentre um grupo de valores. SUM - contar o número de linhas. Explicação: AVG(x) - Retorna o valor médio da coluna x. SUM(x) - Retorna a soma da coluna x. MAX(x) - Retorna o valor máximo da coluna x. MIN(x) - Retorna o valor mínimo da coluna x. COUNT(x) - Retorna o número de valores não nulos da coluna x. 6. Em relação as funções de grupo da linguagem SQL, marque a opção correta: COUNT - retornar o maior valor dentre um grupo de valores. MIN - retornar o menor valor dentre um grupo de valores. AVG - somar um grupo de valores. MAX - calcular a média aritmética. SUM - contar o número de linhas. Explicação: AVG(x) - Retorna o valor médio da coluna x. SUM(x) - Retorna a soma da coluna x. MAX(x) - Retorna o valor máximo da coluna x. MIN(x) - Retorna o valor mínimo da coluna x. COUNT(x) - Retorna o número de valores não nulos da coluna x. 7. Sabendo-se que existem dados de TCC cadastrados com datas de defesa que variam de 20/11/2012 até o dia de hoje, assinale qual das alternativas abaixo retornaria o mesmo resultado que o comando "SELECT * FROM TCC WHERE DTDEFESA IN ('21/11/2013', '22/11/2014');": SELECT * FROM TCC WHERE DTDEFESA BETWEEN '21/11/2013' AND '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA => '21/11/2013' AND <= '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA > '21/11/2013' AND < '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA BETWEEN ('21/11/2013'; '22/11/2014'); SELECT * FROM TCC WHERE DTDEFESA = '21/11/2013' AND '22/11/2014'; 8. 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 WHERE A.CODAREA = L.CODAREA ORDER BY NOMELOCAL DESC; SELECT * FROM AREA A, LOCAL L WHERE A.CODAREA = L.CODAREA ORDER NOMELOCAL ASC; 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 BY NOMELOCAL DESC; SELECT * FROM AREA A INNER JOIN LOCAL L ON A.CODAREA = L.CODAREA ORDER NOMELOCAL DESC; Não Respondida Não Gravada Gravada Exercício inciado em 09/05/2020 00:38:56. 1. Em um projeto lógico de um sistema foi identificado que um projeto é de um certo tipo. Assim, as relações abaixo foram definidas: TIPO_PROJETO (ID_TIPO, NOME) PROJETO (ID_PROJETO, NOME, DESCRICAO, ID_TIPO, VALOR) Conforme a linguagem SQL e as relações dadas, escolha a opção que mostre o nome do projeto e nome do seu tipo, dos projetos que não possuam valor, bem como dos tipos que possuam mais do que cinco projetos. SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND P.VALOR =0 AND TP.ID_TIPO = (SELECT ID_TIPO FROM PROJETO GROUP BY ID_TIPO HAVING COUNT(*) > 5); SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND P.VALOR =0 AND TP.ID_TIPO IN (SELECT ID_TIPO FROM PROJETO GROUP BY ID_TIPO HAVING COUNT(*) > 5); SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND VALOR IS NULL AND TP.ID_TIPO IN (SELECT ID_TIPO FROM PROJETO GROUP BY ID_TIPO HAVING COUNT(*) > 5); SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND VALOR IS NULL AND TP.ID_TIPO IN (SELECT ID_TIPO FROM TIPO_PROJETO GROUP BY ID_TIPO HAVING COUNT(*) > 5); SELECT P.NOME, TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND P.VALOR =0 GROUP BY ID_TIPO HAVING COUNT(*) > 5; Gabarito Coment. 2. De acordo com a estrutura das tabelas abaixo, escolha a opção que mostre o nome do empregado, o nome do seu departamento, daquele que trabalha em departamento que possua mais do que cinco empregados e cujo salário seja superior a média salarial do seu departamento, através da linguagem SQL. O banco de dados é composto por 2 tabelas: a tabela EMP que contém dados dos empregados, cuja chave primária é MATRICULA e a tabela DEPT que contém dados dos departamentos, cuja a chave primária é DEPTNO. A coluna GERENTE é chave estrangeira na tabela EMP, referente à própria tabela EMP. A coluna DEPTNO na tabela EMP é chave estrangeira, referente à tabela DEPT. ESTRUTURA DAS TABELAS DO BANCO DE DADOS TABELA EMP Name Null Type ---------------------------------------------- MATRICULA NOT NULL NUMBER(4) NOME_EMP CHAR(10) CARGO CHAR (9) GERENTE NUMBER(4) SALARIO NUMBER(7,2) COMISSAO NUMBER(7,2) DEPTNO NUMBER(2) TABELA DEPT Name Null Type ---------------------------------------------- DEPTNO NOT NULL NUMBER(2) NOME_DEPT CHAR(14) LOCALIZACAO CHAR(13) SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND D.DEPTNO IN (SELECT DEPTNO FROM EMP GROUP BY DEPTNO HAVING COUNT(*)> 5) AND E.SALARIO>AVG(SALARIO); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO GROUP BY DEPTNO HAVING COUNT(*)> 5 AND E.SALARIO>(SELECT AVG(SALARIO) FROM EMP WHERE DEPTNO=E.DEPTNO); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND COUNT(D.DEPTNO) > 5 AND E.SALARIO> (SELECT AVG(SALARIO) FROM EMP WHERE DEPTNO=E.DEPTNO); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND D.DEPTNO IN (SELECT DEPTNO FROM EMP GROUP BYDEPTNO HAVING COUNT(*)> 5) AND E.SALARIO>(SELECT AVG(SALARIO) FROM EMP); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND D.DEPTNO IN (SELECT DEPTNO FROM EMP GROUP BY DEPTNO HAVING COUNT(*)> 5) AND E.SALARIO>(SELECT AVG(SALARIO) FROM EMP WHERE DEPTNO=E.DEPTNO); Gabarito Coment. 3. Em nosso Banco de Dados temos a tabela denominada Estoq_Regiao conforme a figura abaixo. Queremos listar o conteúdo dessa tabela em ordem de quantidade (Qtde) de forma descendente. Assinale a alternativa que apresenta a instrução SQL correta: SELECT Estoq_Regiao INTO Regiao, Qtde, Vl_Unit ORDER DESC BY Qtde ORDER BY Qtde DESC SELECT Regiao, Qtde, Vl_Unit FROM Estoq_Regiao SELECT Regiao, Qtde, Vl_Unit FROM Estoq_Regiao ORDER BY Qtde DESC ORDER DESC BY Qtde FROM Estoq_Regiao SELECT Regiao, Qtde, Vl_Unit SELECT Regiao, Qtde, Vl_Unit FROM Estoq_Regiao ORDER DESC BY Qtde 4. 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 FROM EMPREGADO WHERE AVG (Salario) > 2000 GROUP BY CodDepartamento SELECT CodDepartamento FROM EMPREGADO GROUP BY CodDepartamento HAVING AVG (Salario) > 2000 SELECT CodDepartamento, AVG (Salario) > 2000 FROM EMPREGADO GROUP BY CodDepartamento SELECT CodDepartamento FROM EMPREGADO WHERE AVG (Salario) > 2000 SELECT CodDepartamento FROM EMPREGADO GROUP BY CodDepartamento ORDER BY AVG (Salario) > 2000 5. Qual o comando SQL deve ser utilizado para definir o resultado da seguinte situação: "Ao final do mês é preciso apresentar o total de vendas de clientes por venda". HAVING FROM WHERE GROUP BY ORDER BY 6. Baseado no modelo de banco de dados mostrado a seguir: FILIAL(idfilial(PK), nome, cidade,endereço,telefone) FUNCIONARIO(idfuncionario(PK),nome,endereço,telefone,salario,idfilial) CLIENTE(idcliente(PK),nome,cpf,endereço,telefone,cidade) CLIENTE_ESPECIAL(idcliente(PK),Km,desconto) CARRO(idcarro(PK),placa,modelo,tipo,cor,ano,Km,valor,chassis,idfilial) ALUGUEL(NF(PK),idcarro,idcliente,valor,CNH,dataIni,dataFim,idfuncionario) Mostre o tipo dos carros e quantos carros são do mesmo tipo: SELECT tipo, sum(tipo) FROM carro GROUP BY tipo; SELECT tipo, count(*) FROM carro GROUP BY tipo; SELECT tipo, max(tipo) FROM carro GROUP BY tipo; SELECT tipo, sum(tipo) FROM carro GROUP BY sum(tipo); SELECT tipo, count(*) FROM carro; 7. Assinale a alternativa que selecione todos os clientes cujo código NÃO esteja entre 50 e 75. SELECT * FROM Cliente Where cliente_id NOT BETWEEN 50 AND 75; Nenhuma alternativa estão corretas SELECT * FROM Cliente Where cliente_id NOT BETWEEN 50 OR 75; SELECT * FROM Cliente Where cliente_id = 50 AND 75; SELECT * FROM Cliente Where cliente_id BETWEEN 50 AND 75; 8. Considere as seguintes tabelas de um banco de dados: 1) Fornecedor (cod_fornec, nome_fornec, telefone, cidade, UF) 2) Estado (UF, nome_estado) A expressão SQL que obtém os nomes dos estados para os quais não há fornecedores cadastrados e: SELECT E.nome_estado FROM Estado AS E WHERE E.UF NOT IN (SELECT F.UF FROM Fornecedor AS F); SELECT E.nome_estado FROM Estado AS E WHERE E.UF IN (SELECT F.UF FROM Fornecedor AS F); SELECT E.nome_estado FROM Estado AS E, FROM Fornecedor AS F WHERE E.UF = F.UF; SELECT E.UF FROM Estado AS E WHERE E.nome_estado NOT IN (SELECT F.UF FROM Fornecedor AS F); SELECT E.nome_estado FROM Estado AS E, FROM Fornecedor AS F WHERE E.nome_estado = F.UF; Gabarito Coment. Não Respondida Não Gravada Gravada Exercício inciado em 09/05/2020 00:40:18. 1. O retorno do valor médio de uma coluna contendo diversos números é possibilitado pela expressão SQL SELECT AVG OF column_name FROM table_name SELECT column_name FROM table_name SETTING AVG SELECT FROM table_name AVG(column_name) SELECT AVG(column_name) FROM table_name SELECT column_name (AVG) FROM table_name Explicação: A função AVG(X) retorna o valor médio da coluna x, ignorando os valores nulos. Exemplo: select AVG(salario) from funcionario 2. Assinale a opção que exibirá para cada valor armazenado na coluna chamada C1 da tabela T1 a quantidade de vezes que este valor aparece repetido. Select C1 from T1 Select C1, from T1 group by count(*) Select C1, sum(C1) from T1 group by C1 Select C1, count(C1) from T1 having count(C1) Select C1, count(C1) from T1 group by C1 Explicação: Analisando a proposta da consulta: - Para obter a quantidade de vezes que um valor aparece repetido precisamos trabalhar com: - Função count(x) ¿ retorna o número de valores não nuos da coluna x. - Group by ¿ permite agruparmos nossos dados, produzindo uma linha sumarizada para cada grupo de linhas selecionado. Sendo assim, o commando correto é: Select C1, count(C1) from T1 group by C1 Gabarito Coment. 3. - Considere o banco de dados relacional de uma clínica médica, no qual as chaves primárias (incrementada automaticamente) e estrangeiras estão sublinhadas. *Obs. A numeração automática iniciará com 1. PACIENTE (id_pac, nome_pac, sexo, fone_pac) ESPECIALIDADE (id_espec, nome_espec) MEDICO (id_med, nome_med, fone_med, id_espec) CONSULTA (id_cons, dt_cons, vl_cons, id_pac, id_med) Dê o comando correspondente de Selecionar o maior valor de consulta. Select MIN(vl_cons) From CONSULTA Select SUM(vl_cons) From CONSULTA Select MAX(vl_cons) From CONSULTA Select vl_cons From CONSULTA Select * From CONSULTA 4. Considere o esquema de uma empresa conforme segue: Func (cod_func, nome, dta_nasc, salario, nro_depto, cod_superv) ; Depto (nro_depto, nome) ; Projeto (cod_proj, nome, duracao, nro_depto) ; Participa (cod_proj, cod_func, horas_trab). Marque a alternativa que contém o comando em SQL para recuperar o nome e o salário dos funcionários do departamento 5, com salário na faixa entre 1000 e 2000. SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5; SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5 OR SALARIO BETWEEN 1000 AND 2000; SELECT NOME, SALARIO FROM FUNC WHERE SALARIO = 1000 AND NRO_DEPTO BETWEEN 1 AND 5; SELECT NOME, SALARIO FROM FUNC WHERE SALARIO BETWEEN 1000 AND 2000; SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5 AND SALARIO BETWEEN 1000 AND 2000; Explicação: SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5 AND SALARIO BETWEEN 1000 AND 2000; 5. Sobre os tipos de funções de um SGBD, marque a opção correta: COUNT realiza da função de retornar o menor valor dentre um grupo de valores. AVG realiza da função de somar um grupo de valores. MIN realiza da função de calcular a média aritmética. MAX realiza da função de retornar o maior valor dentre um grupo de valores. SUM realiza da função de contar o número de linhas. 6. Com relação à cláusula HAVING usada no comando SQL (Structured QueryLanguage), qual a opção correta que tem referência direta com esta cláusula? distinct order by group by where values Gabarito Coment. 7. Dentro da definição a seguir podemos afirmar que ¿Um valor NULL indica que o valor é desconhecido. Um valor NULL é diferente de um valor vazio ou zero. Dois valores nulos não são iguais. Comparações entre dois valores nulos, ou entre um NULL e qualquer outro valor, retornam unknown porque o valor de cada NULL é desconhecido¿. Considerando esta definição, é correto afirmar que: A definição está errada quando fala que ¿o valor de cada NULL é desconhecido¿. A definição está errada quando fala que ¿NULL indica que o valor é desconhecido¿. A definição está certa. A definição está errada porque NULL é vazio. A definição está errada quando fala que ¿Um valor NULL é diferente de um valor vazio ou zero¿. 8. Assinale a opção que apresenta somente funções de grupo UNION, COUNT e MIN MIN, AVG e SUM COUNT, ORDER BY e USING GROUP BY, COMMIT e ROLLBACK LIKE, INTERSECT e DISTINCT Gabarito Coment. Não Respondida Não Gravada Gravada Exercício inciado em 09/05/2020 00:41:46. 1. Baseado no modelo de banco de dados mostrado a seguir: FILIAL(idfilial(PK), nome, cidade,endereço,telefone) FUNCIONARIO(idfuncionario(PK),nome,endereço,telefone,salario,idfilial) CLIENTE(idcliente(PK),nome,cpf,endereço,telefone,cidade) CLIENTE_ESPECIAL(idcliente(PK),Km,desconto) CARRO(idcarro(PK),placa,modelo,tipo,cor,ano,Km,valor,chassis,idfilial) ALUGUEL(NF(PK),idcarro,idcliente,valor,CNH,dataIni,dataFim,idfuncionario) O nome das filias e a quantidade de funcionários que cada filial possui, mostre somente filias com mais de 10 funcionários? SELECT fi.nome Filial, count(*) Quantidade FROM filial fi INNER JOIN funcionário fu ON fi.idfilial=fu.idfilial; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi RIGHT JOIN funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi INNER JOIN funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi, funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi LEFT JOIN funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; 2. Considere a tabela definida pelo comando SQL abaixo. Create table func ( nome varchar(50) not null, salario money not null, cod_depto int null); Considere a consulta SQL abaixo: Select nome, salario from func where salario > 900 and not cod_depto is null order by salario O requisito abaixo que não é atendido por esta consulta é: apresentar o resultado em ordem alfabética. só considerar os registros que apresentem o atributo COD_DEPTO não nulo; listar a coluna NOME da tabela FUNC; listar a coluna SALARIO da tabela FUNC; só considerar os registros que apresentem o atributo SALARIO maior que 900; Gabarito Coment. 3. Sabendo-se que existem dados de TCC cadastrados com datas de defesa que variam de 20/11/2012 até o dia de hoje, assinale qual das alternativas abaixo retornaria o mesmo resultado que o comando "SELECT * FROM TCC WHERE DTDEFESA IN ('21/11/2013', '22/11/2014');": SELECT * FROM TCC WHERE DTDEFESA BETWEEN '21/11/2013' AND '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA => '21/11/2013' AND <= '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA > '21/11/2013' AND < '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA = '21/11/2013' AND '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA BETWEEN ('21/11/2013'; '22/11/2014'); 4. Assinale a alternativa que selecione todos os clientes que terminem com o nome 'Morais' Select * From Cliente Where nome like '%M%' Select * From Cliente Where nome like '%Morais' Select * From Cliente Where nome <> 'Morais' Select * From Cliente Where nome like '%M' Select * From Cliente Where nome like '%Mor' 5. Em SQL, as funções de grupo opeam sobre conjuntos de linhas. Marque a opção correta: COUNT - retornar o maior valor dentre um grupo de valores. SUM - contar o número de linhas. MIN - somar um grupo de valores. AVG - calcular a média aritmética. MAX - retornar o menor valor dentre um grupo de valores. Explicação: AVG(x) - Retorna o valor médio da coluna x. SUM(x) - Retorna a soma da coluna x. MAX(x) - Retorna o valor máximo da coluna x. MIN(x) - Retorna o valor mínimo da coluna x. COUNT(x) - Retorna o número de valores não nulos da coluna x. 6. 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 WHERE A.CODAREA = L.CODAREA ORDER BY NOMELOCAL DESC; 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 NOMELOCAL ASC; 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; 7. A linguagem de banco de dados que é aceita em quase todos os Sistemas de Gerenciamento de Banco de Dados (SGBDs) é a SQL. Dessa forma, utilizando esta linguagem para conseguir filtrar valores resultantes de expressões agregadas, deve-se adicionar ao comando SQL a cláusula: SELECT WHERE SUM AVG HAVING Explicação: Having: A cláusula having só é usada quando se deseja especificar um critério de pesquisa para um grupo ou uma agregação. HAVING pode ser usado somente com a instrução SELECT. HAVING é usado normalmente em uma cláusula GROUP BY. SUM: A função sum(x) retorna a soma da coluna x. Where: A cláusula Where estabelece uma condição que a linha deverá obedecer para que faça parte do conjunto resposta da consulta. No caso apenas retornam as linhas cujo deste da condição de como resposta verdadeiro. Select: Comando utilizado para recuperação dos dados de uma ou mais tabelas. AVG: A função avg(x) retorna o valor médio da coluna x. Gabarito Coment. 8. Dada as tabelas: Pedido(Nr_pedido, Id_cliente, valor_total, data) Cliente(Id_cliente, nome, endereço, bairro, email, telefone), assinale a instrução em SQL que lista os clientes que possuem email do gmail. select nome from cliente where email like @gmail.com* select nome from cliente where email like *gmail* select nome from cliente where email = ¿*@gmail.com select nome from cliente where email in *@gmail.com select nome from cliente where email like *@gmail.com Não Respondida Não Gravada Gravada Exercício inciado em 09/05/2020 00:44:59.
Compartilhar