Questões de Concurso sobre Funções agregadas (GROUP BY e HAVING)

 
 
Disciplina
Assunto 1
Banca
Instituição
Cargo
Ano
Carreira
Área de formação
Escolaridade
Dificuldade
 
Comentários:
Professores
Alunos
Meus Comentários
Vídeo
 
Minhas questões:
Resolvidas
Não resolvidas
Certas
Erradas
 
Tipo de questão:
Certo e errado
Múltipla escolha
Incluir questões:
Anuladas
Desatualizadas
 
Questões:
Todas as questões
 
Filtro simplificado
 
Questões
Todas as questões
 
110 questões encontradas
Questões por página
20
Mais recentes
 

Durante o desenvolvimento de um sistema acadêmico para o IFPB, o analista de tecnologia da informação precisa gerar um relatório que apresente os nomes dos alunos, seus respectivos cursos e a média das notas obtidas em todas as disciplinas. O relatório deve incluir apenas os alunos com média igual ou superior a 7,0, ordenados pela média em ordem decrescente. Considerando a utilização correta da linguagem SQL (Structured Query Language), assinale a alternativa que apresenta uma consulta adequada para esse cenário.


A

SELECT nome, curso, AVG(nota) AS media

FROM Alunos

GROUP BY nome, curso

HAVING AVG(nota) >= 7

ORDER BY media DESC;


B

GET nome, curso, AVG(nota) FROM Alunos

BY nome, curso

WHEN AVG(nota) >= 7

SORT DESC;


C

SELECT nome, curso, SUM(nota) AS media

FROM Alunos

WHERE nota >= 7

GROUP BY nome, curso

ORDER BY media DESC;


D

SHOW nome, curso, AVG(nota) AS media

FROM Alunos

WHERE media >= 7

ORDER BY media DESC;


E

SELECT nome, curso, nota FROM Alunos

WHERE nota <= 7

GROUP BY nome, curso

SORT BY nota DESC;

Considere o modelo relacional abaixo e responda as questões 27, 28 e 29.


Imagem associada para resolução da questão


Qual o comando SQL que retorna o nome do aluno, status e a quantidade de registros em cada status.


A

SELECT a.nome, m.status, COUNT(*) quant

FROM aluno a, matricula m

WHERE a.codaluno = m.codaluno

GROUP BY a.nome.


B

SELECT a.nome, m.status, COUNT(*) quant

FROM aluno a, matricula m

GROUP BY a.nome, m.status.


C

SELECT a.nome, m.status, COUNT(*) quant

FROM aluno a, matricula m

WHERE a.codaluno = m.codaluno.


D

SELECT a.nome, m.status, COUNT(*) quant

FROM aluno a, matricula m

WHERE a.codaluno = m.codaluno

GROUP BY a.nome, m.status.


E

SELECT a.nome, m.status, m.quant

FROM aluno a, matricula m

WHERE a.codaluno = m.codaluno

GROUP BY a.nome, m.status.

Considere que há uma tabela chamada docentes no banco de dados, a qual armazena informações sobre os professores, incluindo matrícula, nome, departamento e salário. Os registros da tabela são os seguintes:


Imagem associada para resolução da questão



Para fazer uma consulta que retorne o nome dos departamentos com mais de um docente, a quantidade de docentes que possuem e sua média salarial, ordenados de forma decrescente pela média salarial, utiliza-se o seguinte script SQL:


1 SELECT departamento,

2 __________(*) AS quantidade_docentes,

3 __________(salario) AS salario_medio

4 FROM docentes

5 GROUP BY departamento

6 __________ quantidade_docentes > 1

7 ORDER BY salario_medio DESC;


Em sequência, as palavras que completam corretamente as lacunas das linhas 2, 3 e 6, para que o script no padrão SQL seja executado corretamente, são:


A

COUNT – AVG – HAVING


B

COUNT – MEAN – WHERE


C

SUM – MEAN – HAVING


D

SUM – AVG – WHERE

O chefe de uma empresa pediu ao analista de dados um relatório que apresentasse todos os empregados que ganham um salário maior que a média salarial de toda a empresa. Ao analista é informado que deve usar a tabela chamada EMPREGADOS, que possui os seguintes campos: EMPREGADO_ID (inteiro), NOME (texto), SALARIO (numérico), e DEPARTAMENTO (texto). O analista deve executar o comando SQL:


A

SELECT NOME, SALARIO from EMPREGADOS

HAVING SALARIO > AVG(SALARIO)


B

SELECT NOME, SALARIO FROM EMPREGADOS

WHERE SALARIO > AVG(SALARIO)


C

SELECT NOME, SALARIO FROM EMPREGADOS

WHERE SALARIO > ( SELECT SALARIO FROM EMPREGADOS )


D

SELECT NOME, SALARIO FROM EMPREGADOS

WHERE SALARIO > ( SELECT AVG(SALARIO) FROM EMPREGADOS )


E

SELECT NOME, SALARIO FROM EMPREGADOS

WHERE SALARIO > ( SELECT SUM(SALARIO) FROM EMPREGADOS )

A cláusula HAVING em uma consulta SQL padrão ANSI é utilizada para


A

filtrar linhas antes da agregação de dados (GROUP BY).


B

ordenar o resultado da consulta.


C

unir duas ou mais tabelas.


D

renomear colunas no resultado da consulta.


E

filtrar grupos de registros após a agregação de dados ter sido realizada pela cláusula GROUP BY.

Considere a seguinte tabela de um banco de dados relacional:


Produto (ID, Artigo, Categoria, Quantidade)


A consulta expressa por meio da linguagem de consulta estruturada (SQL) para se obter a relação de categorias e o número de registros existentes para cada categoria é:


A

SELECT Categoria, Count(ID)

FROM Produto

GROUP BY Categoria;


B

SELECT Categoria, Sum (Categoria)

FROM Produto

GROUP BY Categoria;


C

SELECT Categoria, Count (ID)

FROM Produto;


D

SELECT Categoria, Count (ID)

FROM Produto

GROUP BY ID;


E

SELECT Categoria, Sum (Categoria)

FROM Produto;

Analise o código PL/pgSQL abaixo.


Imagem associada para resolução da questão


Diante do exposto, assinale a alternativa correta.


A

O total de linhas retornado pela consulta é 3


B

O total de linhas retornado pela consulta é 1


C

O total de linhas retornado pela consulta é a soma de Nivel1 + Nivel2 + Nivel3


D

O total de linhas retornado pela consulta é o total de linhas da tabela Tb_funcionarios

A cláusula GROUP BY, do SQL, pode ser utilizada sem a presença de funções agregadas, desde que haja uma cláusula ORDER BY para organizar os resultados da consulta.


C

Certo


E

Errado

Em um banco de dados SQL, suponha que existe uma tabela chamada Vendas com as colunas VendaID, VendedorID e ValorVenda.


Para listar, sem duplicatas, os VendedorID de todos os vendedores que tenham realizado vendas superiores ao valor de 10.000, poderíamos usar a seguinte consulta:


A

SELECT VendedorID FROM Vendas

WHERE ValorVenda > 10000;


B

SELECT DISTINCT VendedorID FROM Vendas

GROUP BY VendedorID

HAVING ValorVenda > 10000;


C

SELECT VendedorID FROM Vendas

WHERE SUM(ValorVenda) > 10000;


D

SELECT DISTINCT VendedorID FROM Vendas

WHERE ValorVenda > 10000;


E

SELECT VendedorID FROM Vendas

WHERE MAX(ValorVenda) > 10000

GROUP BY VendedorID;

O PostgreSQL é um SGBD gratuito de código aberto que suporta consultas relacionais em linguagem SQL. Com relação ao SQL do PostgreSQL, analise as afirmativas a seguir.


I. A cláusula GROUP BY agrupa linhas com os mesmos valores em linhas de resumo, sendo frequentemente usada com funções de agregação como, por exemplo, COUNT( ), MAX( ), MIN( ), SUM( ) e AVG( ), para agrupar um conjunto de resultados de uma ou mais colunas.

II. O operador HAVING foi adicionado ao SQL porque o WHERE não pode ser usado com funções de agregação, as quais são frequentemente usadas com a cláusula GROUP BY. Ao adicionar o HAVING é possível escrever condições similares às das cláusulas WHERE.

III. A expressão CASE testa condições e retorna um valor quando a primeira condição é atendida (como uma instrução if-thenelse); quando a condição seja verdadeira, ele parará a leitura e retornará o resultado, mas, se nenhuma condição for verdadeira, ele retornará o valor da cláusula ELSE. Caso não houver nenhum ELSE e nenhuma condição for verdadeira, ele retornará o valor NULL.


Está correto o que se afirma em


A

I e II, apenas.


B

I e III, apenas.


C

II e III, apenas.


D

I e IV, apenas.


E

III e IV, apenas.

Considerando a execução de um script PL/SQL para gerar relatórios de vendas mensais, que necessita agrupar vendas por mês e calcular o total vendido, supondo que a tabela Vendas inclua as colunas VendaID, DataVenda e ValorVenda, qual seria a estratégia correta para realizar este cálculo?


A

Aplicar a função SUM() diretamente na tabela Vendas, agrupando os resultados por mês usando a função TO_CHAR(DataVenda, 'MM').


B

Utilizar um LOOP para iterar por cada registro de venda e um array para acumular os valores por mês.


C

Criar uma função PL/SQL que receba o mês como parâmetro e retorne o total de vendas para aquele mês.


D

Implementar um procedimento armazenado que use um cursor para selecionar vendas por mês e um acumulador para somar os valores.

Dada a tabela "Professores" com o atributo "salario", qual consulta SQL retorna a média de salários dos professores?


A

SELECT AVG(salario) FROM Professores;


B

SELECT salario(AVG) FROM Professores;


C

SELECT AVG(Professores) FROM salario;


D

SELECT MIN(salario) FROM Professores;

As instruções SQL a seguir retornam os nomes dos psicólogos que concluíram o curso com o maior número de inscritos.


Imagem associada para resolução da questão


C

Certo


E

Errado

Considere o seguinte comando SQL:


SELECT projeto_nome, COUNT(DISTINCT vereador_nome)

FROM propositor, projeto

WHERE propositor.projeto_id = projeto.projeto_id

GROUP BY projeto_id

HAVING AVG(votos_favoraveis) = 10;


Entre as opções a seguir, assinale aquela que apresenta corretamente o comportamento dessa consulta:


A

A cláusula HAVING verifica os valores antes da agregação e é aplicada para validar as condições no momento da junção das tabelas.


B

A cláusula WHERE realiza a contagem de votos favoráveis em cada propositor.


C

A cláusula HAVING não existe em SQL, e a filtragem deve ser feita utilizando a cláusula WHERE após a função GROUP BY.


D

A cláusula HAVING filtra apenas os projetos que possuem uma média de votos favoráveis igual a 10.


E

A cláusula HAVING filtra apenas os projetos que possuem uma média maior ou igual a 10 votos favoráveis.

Na linguagem SQL (Structured Query Language), qual palavra-chave é utilizada para classificar, de forma crescente ou decrescente, um conjunto de resultados de uma instrução SELECT?


A

HAVING


B

ORDER BY


C

SEQUENCE BY


D

DISTINCT


E

GROUP BY

Após a execução do comando subsequente


SELECT ESPEC_SERV, COUNT(*)

FROM SERVICO

GROUP BY ESPEC_SERV

HAVING COUNT(*) > 1;


será mostrada lista a seguir.


REPOSIÇÃO DE ACESSÓRIOS

CONSTRUÇÃO DE BOCA DE LOBO

CONSTRUÇÃO DE BOCA DE LOBO

VISTORIAS


C

Certo


E

Errado

Em SQL (ANSI), as funções agregadas podem ser utilizadas para derivar informações a partir de agrupamentos de tuplas. Também é possível definir condições que podem ser aplicadas aos agrupamentos de tuplas. Considerando uma simples relação que armazena os alunos matriculados em uma turma. Essa tabela identificada como “matriculas” é composta apenas pelos campos id_turma e id_aluno, marque a alternativa que resulta nos ids das turmas que possuem mais de 30 alunos matriculados.


A

SELECT id_turma FROM matriculas GROUP BY id_aluno WHERE count > 30;


B

SELECT id_turma FROM matriculas GROUP BY id_aluno HAVING count(*) > 30;


C

SELECT id_turma FROM matriculas GROUP BY id_turma HAVING count(*) > 30;


D

SELECT id_turma FROM matriculas(id_turma) WHERE count > 30;

Dada a tabela "Alunos" com o atributo "idade" do tipo inteiro, qual consulta SQL retorna todos os alunos com idade entre 18 e 25 anos?


A

SELECT * FROM Alunos WHERE idade LIKE '18-25';


B

SELECT * FROM Alunos WHERE idade >= 18 AND idade >= 25;


C

SELECT * FROM Alunos WHERE idade < 18 AND idade < 25;


D

SELECT * FROM Alunos WHERE idade BETWEEN 18 AND 25;

Considere a consulta SQL a seguir:


Imagem associada para resolução da questão


Com relação à sua estrutura, a consulta


A

apresentará os dados ordenados de forma decrescente pelo atributo c.descricao.


B

listará a média de valores de lançamentos contábeis por descrição de conta e data do lançamento contábil.


C

possui um erro estrutural pela falta da declaração da cláusula HAVING, não podendo ser executada.


D

produz na cláusula FROM uma visão em linha, fruto da junção de tabelas realizada.


E

realiza uma junção externa entre as tabelas tb_lanc_contabeis e tb_contas.

   
Gerar simulado