Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FUNDATEC 2026

Banco de DadosSQL
Código
qg685945
Banca
FUNDATEC
Órgão
IFC-SC
Ano
2026
Nível
Superior
Cargo
Professor EBTT - Informática: Engenharia de Software e Banco de Dados
Considere o seguinte comando SQL executado em um banco de dados:SELECT COUNT(ID), AVG(Valor), TipoFROM TransacoesWHERE CAST(Valor AS VARCHAR) LIKE '1%'GROUP BY TipoHAVING COUNT(ID) > 10;Assinale a alternativa que apresenta a correta descrição do resultado produzido pela execução desse comando.
  1. ARetorna a quantidade de transações, a média dos valores e o tipo, agrupados por tipo, exibindo exclusivamente os grupos com mais de 10 registros cujos valores representem o cálculo aproximado de 1%.
  2. BRetorna a quantidade de transações, a média dos valores e o tipo, restringindo a saída aos grupos em que o valor médio calculado seja superior a 10 e cujo registro inicie obrigatoriamente com o dígito '1'.
  3. CRetorna a quantidade de transações, a média dos valores e o tipo, apresentando apenas os grupos em que a quantidade de valores que contêm o número '1' em qualquer posição seja maior que 10.
  4. DRetorna a quantidade de transações, a média dos valores e o tipo, agrupados por tipo, exibindo exclusivamente os grupos que contêm mais de 10 registros nos quais o valor inicie com o dígito '1'.
  5. ERetorna a quantidade de transações, a média dos valores e o tipo, exibindo os registros agrupados que possuem um identificador (ID) estritamente maior que 10 e cujo valor termine com o dígito '1'.
Revelar gabarito e comentário

GabaritoD — Retorna a quantidade de transações, a média dos valores e o tipo, agrupados por tipo, exibindo exclusivamente os grupos que contêm mais de 10 registros nos quais o valor inicie com o dígito '1'.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Comando SQL com GROUP BY, HAVING e LIKE

Gabarito: letra D. O comando primeiro filtra as linhas da tabela Transacoes cujo valor convertido para string começa com o dígito '1' (WHERE CAST(Valor AS VARCHAR) LIKE '1%'), depois agrupa por Tipo, conta os IDs de cada grupo e mantém apenas os grupos com mais de 10 registros (HAVING COUNT(ID) > 10). Por fim, seleciona a contagem, a média dos valores e o Tipo. A alternativa D descreve corretamente: "agrupados por tipo, exibindo exclusivamente os grupos que contêm mais de 10 registros nos quais o valor inicie com o dígito '1'".

A ordem de processamento de um comando SQL com essas cláusulas é:

  1. FROM – tabela de origem;

  2. WHERE – filtra linhas antes do agrupamento;

  3. GROUP BY – agrupa as linhas restantes;

  4. HAVING – filtra grupos após a agregação;

  5. SELECT – projeta as colunas solicitadas.

No caso, o WHERE (LIKE '1%') elimina todas as linhas cujo valor não inicia com '1'. Em seguida, o GROUP BY Tipo cria grupos. O HAVING COUNT(ID) > 10 descarta grupos com 10 ou menos registros. O resultado final mostra, para cada grupo aprovado, COUNT(ID), AVG(Valor) e o Tipo.

flowchart TD
  A[FROM Transacoes] --> B[WHERE CAST(Valor AS VARCHAR) LIKE '1%']
  B --> C[GROUP BY Tipo]
  C --> D[HAVING COUNT(ID) > 10]
  D --> E[SELECT COUNT(ID), AVG(Valor), Tipo]

Critério

Alternativa A

Alternativa B

Alternativa C

Alternativa D (Gabarito)

Alternativa E

Filtro WHERE (LIKE '1%')

❌ Interpreta como "cálculo aproximado de 1%"

❌ Não menciona corretamente

❌ "Contém '1' em qualquer posição" (deveria ser "inicia com '1'")

✅ "Valor inicie com o dígito '1'"

❌ "Valor termine com o dígito '1'"

Condição HAVING

❌ Não especifica COUNT(ID) > 10

❌ "Valor médio superior a 10" (troca COUNT por AVG)

✅ "Quantidade de valores > 10" (correto, mas com erro no LIKE)

✅ "Mais de 10 registros"

❌ "ID estritamente maior que 10" (troca COUNT por ID)

Agrupamento

✅ "Agrupados por tipo"

✅ "Agrupados por tipo"

✅ "Agrupados por tipo"

✅ "Agrupados por tipo"

❌ "Registros agrupados" (impreciso)

Descrição geral correta

Alternativa A — ❌ Incorreta

Afirma que os valores representam "o cálculo aproximado de 1%". Isso é um erro: o filtro LIKE '1%' seleciona valores que iniciam com o dígito 1, não uma aproximação percentual. A descrição não corresponde à semântica do comando.

Alternativa B — ❌ Incorreta

Diz que a condição HAVING é sobre "valor médio calculado seja superior a 10" (AVG(Valor) > 10). Na verdade, o HAVING usa COUNT(ID) > 10, ou seja, número de registros por grupo maior que 10. Troca o conceito entre média e contagem.

Alternativa C — ❌ Incorreta

Afirma que o LIKE seleciona "valores que contêm o número '1' em qualquer posição". O padrão '1%' busca strings que começam com '1', enquanto '%1%' buscaria qualquer posição. Há uma troca sutil de padrão.

Alternativa D — ✅ Correta ⟵ GABARITO

Descreve exatamente o que o comando faz: agrupa por tipo, exibe apenas os grupos com mais de 10 registros cujos valores (após filtro) iniciam com o dígito '1'. Inclui a contagem e a média. Correta.

Alternativa E — ❌ Incorreta

Afirma que HAVING é sobre "identificador (ID) estritamente maior que 10" e que o valor termina com '1'. HAVING COUNT(ID) > 10 é uma condição sobre a contagem de IDs, não sobre o próprio ID. Além disso, o LIKE é '1%' (início) e não '%1' (término). Duplo erro.


NÃO CAIA NESSA!

A banca explora duas trocas comuns: (1) confundir '1%' (inicia com '1') com '%1%' (contém '1') ou '%1' (termina com '1'); (2) trocar a condição do HAVING – que é sobre a agregação COUNT(ID) – por uma condição sobre AVG(Valor) ou sobre o próprio ID. Fique atento: o HAVING sempre atua sobre o resultado de funções de agregação do GROUP BY.

PEGA ESSA DICA!

Para resolver questões de SQL com GROUP BY e HAVING, lembre-se do fluxo: WHERE → GROUP BY → HAVING → SELECT. O WHERE filtra linhas antes de agrupar; o HAVING filtra grupos depois de agrupar. O operador LIKE com % no final ('1%') busca apenas inícios; com % no início ('%1') busca finais; com % dos dois lados ('%1%') busca qualquer ocorrência.


Gabarito: letra D.

Link permanente: /questoes/qg685945