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
 
106 questões encontradas
Questões por página
20
Mais recentes
 

O IPAAM mantém um banco de dados SQL para acompanhar empreendimentos e suas licenças ambientais. Esse banco de dados contém as tabelas EMPREENDIMENTO (id_emp, nome) e LICENCA (id_licenca, id_emp, status). O IPAAM deseja listar os nomes dos empreendimentos que possuem mais de uma licença com status 'ATIVA', conforme o padrão SQL ANSI.


Considerando a situação hipotética apresentada, assinale a opção que apresenta o comando SQL correto para atender à necessidade descrita.


A

SELECT e.nome

FROM EMPREENDIMENTO e

JOIN LICENCA l ON e.id_emp = l.id_emp

WHERE l.status = 'ATIVA'

GROUP BY e.nome

HAVING COUNT(*) > 1;


B

SELECT nome

FROM EMPREENDIMENTO

WHERE COUNT(status) > 1;


C

SELECT e.nome

FROM EMPREENDIMENTO e

JOIN LICENCA l

WHERE l.status = 'ATIVA';


D

SELECT e.nome

FROM EMPREENDIMENTO e

GROUP BY e.nome

WHERE COUNT(*) > 1;


E

SELECT e.nome

FROM EMPREENDIMENTO e

WHERE EXISTS LICENCA;

Analise a seguinte consulta SQL:


SELECT departamento, COUNT(*)

FROM funcionarios

GROUP BY departamento

HAVING COUNT(*) > 5;


Essa consulta retorna:


A

Erro de sintaxe.


B

Apenas o total de funcionários da tabela.


C

Todos os departamentos com exatamente 5 funcionários.


D

Todos os funcionários cujo departamento possui mais de 5 funcionários.


E

Os departamentos que possuem mais de 5 funcionários e a quantidade de funcionários em cada um deles.

Deseja-se obter a apuração do total de ICMS por município e, a partir desse resultado intermediário, retornar apenas municípios cujo total esteja acima da média estadual, usando SQL Oracle com legibilidade e reúso do resultado agregado. Para isso, a estrutura adequada deve usar


A

Common Table Expression (WITH) para total por município e, na consulta final, filtrar por comparação com a média.


B

SUM e AVG na mesma lista SELECT sem separar níveis de agregação.


C

HAVING com subconsulta que referencia a própria consulta agregada sem CTE.


D

subconsulta correlacionada no SELECT para recalcular à total de cada município em cada linha.


E

GROUP BY e aplicar WHERE comparando diretamente com AVG (total) no mesmo nível.

Considere o seguinte esquema de banco de dados de uma loja virtual:


CLIENTE(cliente_id, nome, email, cidade, estado)

PEDIDO(pedido_id, cliente_id, data_pedido, valor_total, status)

ITEM_PEDIDO(pedido_id, produto_id, quantidade, preco_unitario)

PRODUTO(produto_id, nome, categoria, estoque)


O gerente de vendas precisa de um relatório que mostre o nome de cada cliente e o valor total de todos os seus pedidos com status 'ENTREGUE', exibindo apenas os clientes que gastaram mais de R$ 1.000,00 no total. O resultado deve ser ordenado do maior para o menor valor gasto.


Assinale a opção que apresenta corretamente a consulta SQL que atende corretamente a esse requisito.


A

SELECT c.nome, SUM(p.valor_total) AS total_gasto FROM CLIENTE c JOIN PEDIDO p ON c.cliente_id = p.cliente_id WHERE p.status = 'ENTREGUE' GROUP BY c.cliente_id, c.nome HAVING SUM(p.valor_total) > 1000 ORDER BY total_gasto DESC


B

SELECT c.nome, SUM(p.valor_total) AS total_gasto FROM CLIENTE c, PEDIDO p WHERE c.cliente_id = p.cliente_id AND SUM(p.valor_total) > 1000 GROUP BY c.nome ORDER BY total_gasto


C

SELECT c.nome, p.valor_total AS total_gasto FROM CLIENTE c JOIN PEDIDO p ON c.cliente_id = p.cliente_id WHERE p.status = 'ENTREGUE' AND p.valor_total > 1000 ORDER BY p.valor_total DESC


D

SELECT nome, SUM(valor_total) AS total_gasto FROM PEDIDO WHERE status = 'ENTREGUE' GROUP BY cliente_id HAVING total_gasto > 1000 ORDER BY total_gasto DESC


E

SELECT c.nome, COUNT(p.valor_total) AS total_gasto FROM CLIENTE c LEFT JOIN PEDIDO p ON c.cliente_id = p.cliente_id GROUP BY c.nome HAVING COUNT(p.valor_total) > 1000

Uma base tributária de uma SEFAZ possui duas tabelas:


contribuinte (id, cpf_cnpj, nome, situacao)

debitos (id, contribuinte_id, valor, tipo_tributo, data_vencimento)


A equipe de Banco de Dados deseja listar contribuintes ativos, exibindo o nome e o valor total de débitos vencidos, considerando apenas tributos do tipo IPTU (isto é, data_vencimento anterior à data atual). Considerando consultas escritas em um SGBD em que não há mais de um contribuinte com o mesmo nome na base de dados e em que CURRENT_DATE retorna a data atual, a consulta SQL que atende ao requisito é:


A

SELECT C.nome, SUM(d.valor) FROM contribuinte c JOIN debitos d ON c.id = d.id WHERE

c. situacao = 'ATIVO' AND d.tipo_tributo = 'IPTU' AND d.data_vencimento < CURRENT_DATE GROUP

BY c.nome;


B

SELECT nome, SUM(valor) FROM contribuinte c LEFT JOIN debitos d ON c.id = d.contribuinte_id

WHERE situacao = 'ATIVO' GROUP BY nome HAVING tipo_tributo = 'IPTU';


C

SELECT c.nome, SUM(d.valor) AS total_debitos FROM contribuinte c JOIN debitos d ON c.id =

d.contribuinte_id WHERE c.situacao = 'ATIVO' AND d.tipo_tributo = 'IPTU' AND

d.data_vencimento < CURRENT_DATE GROUP BY c.nome;


D

SELECT c.nome, valor FROM contribuinte c JOIN debitos d ON c.id = d.contribuinte_id WHERE

c.situacao = 'ATIVO' AND d.data_vencimento < CURRENT_DATE;


E

SELECT c.nome, SUM(d.valor) FROM contribuinte c WHERE c.situacao = 'ATIVO' AND

d.tipo_tributo = 'TPTU' GROUP BY c.nome;

Considere a seguinte tabela de um banco de dados relacional: Roupa (Cod, Tipo, Valor), bem como o seguinte comando SQL:


SELECT Tipo, AVG (Valor)

FROM Roupa

Instrução X;


O código a ser inserido na última linha do comando SQL, de forma a substituir a Instrução X, para que se obtenham os Tipos de Roupa, bem como o valor médio de cada Tipo, é:


A

WHERE Tipo LIKE ‘%’;


B

WHERE Tipo <> NULL;


C

GROUP IN Tipo;


D

WHERE Tipo CONTAINS ‘*’;


E

GROUP BY Tipo;

Considere o seguinte esquema de banco de dados relacional, supondo que as consultas são executadas utilizando SQL padrão (ANSI SQL):


CLIENTES

Imagem associada para resolução da questão


PEDIDOS

Imagem associada para resolução da questão


Considere a seguinte consulta SQL:


SELECT c.nome, COUNT(p.id_pedido) AS total_pedidos, SUM(p.valor) AS total_valor

FROM clientes c

INNER JOIN pedidos p

ON c.id_cliente = p.id_cliente

GROUP BY c.id_cliente, c.nome

HAVING SUM(p.valor) > 150;


Assinale a alternativa que apresenta o resultado da consulta.



A

Imagem associada para resolução da questão


B

Imagem associada para resolução da questão


C

Imagem associada para resolução da questão


D

Imagem associada para resolução da questão


E

Imagem associada para resolução da questão

Em um sistema corporativo de gestão hospitalar, que utiliza Oracle Database como sistema gerenciador de banco de dados, é necessário gerar um relatório operacional sobre procedimentos realizados em atendimentos de saúde.


O relatório deve atender aos seguintes requisitos funcionais:


- agrupar os procedimentos pelo código do atendimento;

- apresentar o menor valor, o valor total e a quantidade de procedimentos por atendimento;

- retornar apenas os atendimentos cujo valor mínimo dos procedimentos seja maior ou igual ao valor médio de todos os atendimentos cadastrados no sistema;

- ordenar o resultado pelo código do atendimento.


Para atender a esses requisitos, foi elaborado o seguinte comando SQL, compatível com o Oracle Database.


Imagem associada para resolução da questão


Fonte: a banca


Considerando o funcionamento do Oracle, o uso de funções de agregação, subconsultas escalares e a cláusula HAVING, assinale a alternativa CORRETA.


A

A cláusula WHERE filtra os resultados após o agrupamento, tornando a cláusula HAVING desnecessária no Oracle Database.


B

A subconsulta (SELECT AVG(VALOR) FROM ATENDIMENTO) é executada uma única vez, retornando um valor médio global que é comparado com o valor mínimo de cada grupo definido pelo GROUP BY.


C

O Oracle não permite o uso simultâneo das funções MIN, SUM e COUNT em uma mesma instrução SELECT dentro de outra.


D

A cláusula HAVING é aplicada antes do GROUP BY, filtrando registros individuais da tabela ITEM_ATENDIMENTO.


E

A cláusula ORDER BY interfere diretamente no cálculo das funções de agregação, podendo alterar os valores retornados por SUM() e COUNT().

Considere as tabelas FUNCIONARIO (ID, NOME, DEPTO_ID, SALARIO) e DEPARTAMENTO (DEPTO_ID, NOME_DEPTO).


Um analista de BI deseja obter os nomes de todos os departamentos cuja média salarial dos funcionários é superior à média salarial de todos os funcionários da empresa. Assinale a opção que apresenta o comando SQL capaz de atender a essa requisição de forma mais concisa.


A

SELECT T2.NOME_DEPTO

FROM FUNCIONARIO T1 JOIN DEPARTAMENTO T2 ON

T1.DEPTO_ID = T2.DEPTO_ID

WHERE T1.SALARIO > (SELECT AVG(SALARIO) FROM

FUNCIONARIO)

GROUP BY T2.NOME_DEPTO;


B

SELECT T2.NOME_DEPTO

FROM FUNCIONARIO T1 JOIN DEPARTAMENTO T2 ON

T1.DEPTO_ID = T2.DEPTO_ID

GROUP BY T2.NOME_DEPTO

HAVING AVG(T1.SALARIO) > (SELECT AVG(SALARIO) FROM

FUNCIONARIO);


C

SELECT NOME_DEPTO

FROM DEPARTAMENTO

WHERE DEPTO_ID IN (

SELECT DEPTO_ID

FROM FUNCIONARIO

GROUP BY DEPTO_ID

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

FUNCIONARIO)

);


D

SELECT T2.NOME_DEPTO

FROM FUNCIONARIO T1 JOIN DEPARTAMENTO T2 ON

T1.DEPTO_ID = T2.DEPTO_ID

WHERE T1.SALARIO > ALL (SELECT AVG(SALARIO) FROM

FUNCIONARIO GROUP BY DEPTO_ID);


E

SELECT T2.NOME_DEPTO

FROM FUNCIONARIO T1 JOIN DEPARTAMENTO T2 ON

T1.DEPTO_ID = T2.DEPTO_ID

GROUP BY T2.NOME_DEPTO

ORDER BY AVG(T1.SALARIO) DESC;

Um Analista de Sistemas foi encarregado de desenvolver um relatório gerencial utilizando a Structured Query Language (SQL). Nesse relatório, ele precisa agrupar registros do banco de dados institucional e, posteriormente, aplicar condições sobre esses grupos, considerando resultados de funções de agregação, de modo a exibir apenas os grupos que atendam a determinados critérios estabelecidos pela gestão.


Nesse contexto, qual cláusula SQL deve ser utilizada pelo Analista para atender a essa necessidade?


A

COUNT.


B

HAVING.


C

REPLACE.


D

MERGE.


E

UPDATE.

Considere uma tabela definida pelo seguinte comando SQL DDL:


CREATE TABLE vendas (id_venda INT PRIMARY KEY, id_cliente INT NOT NULL, valor INT NOT NULL);


Considere também que esta tabela contém 5 registros:


Registro 1: id-venda = 1; id_cliente = 10; valor = 100.

Registro 2: id-venda = 2; id_cliente = 10; valor = 200.

Registro 3: id-venda = 3; id_cliente = 20; valor = 150.

Registro 4: id-venda = 4; id_cliente = 20; valor = 150.

Registro 5: id-venda = 5; id_cliente = 30; valor = 500.


Considere ainda a seguinte consulta definida sobre esta tabela:


SELECT id_cliente, SUM(valor) AS soma FROM vendas

WHERE valor > (SELECT AVG(valor) FROM vendas)

GROUP BY id_cliente

HAVING SUM(valor) > (SELECT SUM(valor) FROM vendas

WHERE id_cliente = 20)

ORDER BY soma;


Quais valores de id_cliente aparecem no resultado desta consulta sobre aquela tabela?


A

Valores 10, 20 e 30.


B

Valores 10 e 30.


C

Apenas o valor 20.


D

Apenas o valor 30.

A coordenação de um curso decidiu que cada professor poderia orientar no máximo 15 alunos. Para verificar se algum professor estava com mais orientandos do que este limite, foi solicitado um relatório com a quantidade total de alunos sob sua orientação, que ultrapassava esse limite.


Considerando a tabela de quantidade de orientados por professor (qt_orientandos_professor) a seguir:


Imagem associada para resolução da questão


Assinale a alternativa em que a cláusula HAVING é utilizada CORRETAMENTE?


A

SELECT professor, SUM(qt_orientandos) AS total FROM qt_orientandos_professor

WHERE SUM(qt_orientandos) >= 15

GROUP BY professor;


B

SELECT professor, SUM(qt_orientandos) AS total

FROM qt_orientandos_professor

GROUP BY professor

HAVING SUM(qt_orientandos) >= 15;


C

SELECT professor, SUM(qt_orientandos) AS total

FROM qt_orientandos_professor

WHERE SUM(qt_orientandos) >= 15

HAVING total >= 15;


D

SELECT professor, SUM(qt_orientandos) AS total

FROM qt_orientandos_professor

WHERE qt_orientandos >= 15

GROUP BY professor;


E

SELECT professor, SUM(qt_orientandos) AS total

FROM qt_orientandos_professor

HAVING SUM(qt_orientandos) >= 15

GROUP BY professor;

Acerca da linguagem SQL, assinale a opção correta.


A

A combinação de funções de agregação com GROUP BY permite produzir métricas agrupadas por atributos, como totais, médias e contagens segmentadas.


B

A cláusula ORDER BY deve ser utilizada antes do GROUP BY para que a ordenação não interfira nos cálculos agregados.


C

A aplicação de SUM e AVG exige que a consulta tenha um GROUP BY.


D

A cláusula HAVING atua antes da etapa de agregação, sendo equivalente à cláusula WHERE em consultas com GROUP BY.


E

A função COUNT(coluna) retorna o total de linhas da consulta, independentemente da existência de valores nulos na respectiva coluna.

Em SGBDs relacionais que utilizam a linguagem SQL, a recuperação de dados complexos envolve a compreensão da ordem lógica de processamento das cláusulas e a interação entre subconsultas e visões para a geração de relatórios gerenciais eficientes.


Dadas as afirmativas sobre os conceitos de manipulação de dados em SQL,


I. A cláusula HAVING é utilizada, exclusivamente, para filtrar linhas individuais antes que o agrupamento pelo GROUP BY seja realizado pelo motor de execução do banco de dados.

II. Uma subconsulta correlacionada é aquela em que a consulta interna depende de valores da consulta externa para sua execução, sendo processada uma vez para cada linha candidata da consulta externa.

III. Uma Visão (View) em banco de dados não armazena os dados fisicamente (salvo em casos de visões materializadas), funcionando como uma consulta SELECT armazenada que facilita a simplificação de acessos complexos e o controle de segurança.

IV. O uso de subconsultas na cláusula FROM (também conhecidas como tabelas derivadas) exige que o resultado da subconsulta receba um alias (apelido) para que possa ser referenciado no restante da consulta principal.


verifica-se que estão corretas apenas


A

I e II.


B

I e III.


C

III e IV.


D

I, II e IV.


E

II, III e IV.

Considere um banco de dados relacional de um e-commerce composto pelas seguintes tabelas e suas respectivas colunas, com os tipos de dados estritamente indicados (chaves primárias sublinhadas):


Imagem associada para resolução da questão


Um analista de dados precisa gerar um relatório que retorne os nomes dos clientes que compraram produtos do tipo 'livro' durante o mês de dezembro (independentemente do ano), ordenados a partir daqueles que realizaram a maior quantidade de compras para os de menor quantidade. Assinale a alternativa que apresenta o comando SQL correto para obter esse resultado.


A

Imagem associada para resolução da questão


B

Imagem associada para resolução da questão


C

Imagem associada para resolução da questão


D

Imagem associada para resolução da questão


E

Imagem associada para resolução da questão

Sobre consultas em SQL padrão (ANSI/ISO) com GROUP BY, HAVING e funções de agregação, assinale a alternativa correta.


A

A cláusula WHERE filtra grupos após o GROUP BY, enquanto a cláusula HAVING filtra linhas individuais antes da formação dos grupos.


B

A cláusula HAVING é aplicada aos grupos após sua formação e pode usar funções de agregação. Além disso, COUNT(*) conta todas as linhas do grupo, enquanto COUNT(atributo) desconsidera valores NULL desse atributo.


C

COUNT(atributo) e COUNT(*) são equivalentes: ambas contam todas as linhas do grupo, inclusive aquelas em que o atributo vale NULL.


D

Em uma consulta com GROUP BY, qualquer atributo presente na lista SELECT pode aparecer fora de função agregadora mesmo sem constar no GROUP BY, desde que pertença à tabela agrupada.


E

Funções de agregação podem ser usadas livremente na cláusula WHERE, desde que a consulta também contenha GROUP BY.

A base de dados Oracle armazena informações sobre atendimentos ambulatoriais realizados em unidades do SUS no Paraná, conforme a tabela em formato de script SQL a seguir.


ATENDIMENTO

(

ID_ATENDIMENTO NUMBER,

COD_UNIDADE NUMBER,

DATA_ATENDIMENTO DATE,

CUSTO NUMBER(10,2)

)


O Analista de Sistemas precisa gerar um relatório gerencial que apresente, para cada unidade de saúde, o custo total dos atendimentos realizados no mês de março de 2024, somente das unidades cujo custo total mensal seja superior a R$ 10.000,00, ordenando o resultado do maior para o menor custo. Assinale a alternativa que apresenta a consulta SQL CORRETA em Oracle, atendendo integralmente ao requisito descrito.


A

SELECT COD_UNIDADE, CUSTO

FROM ATENDIMENTO

WHERE DATA_ATENDIMENTO LIKE '%03/2024%'

GROUP BY COD_UNIDADE

HAVING CUSTO > 10000;


B

SELECT COD_UNIDADE, SUM (CUSTO)

FROM ATENDIMENTO

WHERE DATA_ATENDIMENTO BETWEEN '01/03/2024' AND '31/03/2024'

AND SUM (CUSTO) > 10000

GROUP BY COD_UNIDADE

ORDER BY SUM (CUSTO) DESC;


C

SELECT COD_UNIDADE, SUM (CUSTO)

FROM ATENDIMENTO

GROUP BY COD_UNIDADE

WHERE SUM (CUSTO) > 10000

AND DATA_ATENDIMENTO BETWEEN DATE '2024-03-01' AND DATE '2024-03-31';


D

SELECT COD_UNIDADE, SUM (CUSTO)

FROM ATENDIMENTO

WHERE DATA_ATENDIMENTO >= DATE '2024-03-01'

AND DATA_ATENDIMENTO < DATE '2024-04-01'

GROUP BY COD_UNIDADE

HAVING SUM (CUSTO) >= 10000

ORDER BY SUM (CUSTO);


E

SELECT COD_UNIDADE, SUM (CUSTO)

FROM ATENDIMENTO

WHERE DATA_ATENDIMENTO >= DATE '2024-03-01'

AND DATA_ATENDIMENTO < DATE '2024-04-01'

GROUP BY COD_UNIDADE

HAVING SUM (CUSTO) > 10000

ORDER BY SUM (CUSTO) DESC;

Considere a seguinte instrução SQL executada em um banco de dados relacional:


Imagem associada para resolução da questão


Essa consulta retorna os departamentos com mais de dez funcionários cujos salários são superiores a cinco mil reais, apresentando o nome do departamento e a quantidade correspondente, configurando uma operação de:


A

junção interna entre tabelas de salário e departamento.


B

subconsulta escalar para cálculo de média salarial.


C

ordenação hierárquica com paginação de resultados.


D

agregação condicional com filtragem pós-agrupamento

Uma Analista está desenvolvendo um relatório em um sistema de vendas para identificar clientes cujo valor total de pedidos ultrapassou R$ 500,00 no mês corrente. A consulta utiliza as cláusulas JOIN e GROUP BY com a função de agregação SUM. Ao testar a consulta, ela percebeu que precisava filtrar os grupos com base no valor calculado pela agregação. Nesse contexto, qual cláusula SQL deve ser utilizada para filtrar grupos com base no resultado de uma função de agregação?


A

A cláusula WHERE, posicionada após o GROUP BY, filtra registros com base em valores produzidos por funções de agregação.


B

A cláusula DISTINCT, que elimina resultados duplicados e pode ser empregada para restringir grupos de agregação por valor calculado.


C

A cláusula FILTER, aplicada junto ao GROUP BY, que restringe os grupos resultantes com base em critérios numéricos calculados.


D

A cláusula HAVING, posicionada após o GROUP BY, que permite filtrar grupos com base no resultado de funções de agregação.


E

A cláusula ORDER BY, quando combinada com critérios de ordenação, que pode ser configurada para restringir grupos de agregação por valor total.

Considere a tabela Vendas(id_venda, produto, valor). Deseja-se listar apenas os produtos cujo valor total vendido seja superior a 10.000. A consulta SQL que atende corretamente a esse requisito é


A

SELECT produto FROM Vendas WHERE SUM(valor) > 10000 GROUP BY produto


B

SELECT produto FROM Vendas HAVING valor > 10000


C

SELECT produto, SUM(valor) FROM Vendas WHERE valor > 10000


D

SELECT DISTINCT produto FROM Vendas ORDER BY SUM(valor) DESC


E

SELECT produto FROM Vendas GROUP BY produto HAVING SUM(valor) > 10000

 
 
Gerar simulado