Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — Quadrix 2025

Banco de DadosConsultas e Comandos em SQL
Código
qa699067
Banca
Quadrix
Órgão
CAU MA
Ano
2025
Cargo
Ass TI ( )
A empresa ArqUrban de São Luís‑MA, especializada em projetos de arquitetura e urbanismo, mantém um banco de dados para armazenar informações sobre projetos, clientes e equipes de trabalho. Foi solicitado a um técnico de TI que analisasse algumas consultas SQL básicas feitas por um estagiário e verificar se estão corretas para obter as informações desejadas. Com base nessa situação hipotética, julgue os itens seguintes. A consulta SELECT projeto_id, COUNT(*) FROM tarefas GROUP BY projeto_id and WHERE projeto_id > 10; retorna o número de tarefas por projeto.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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”.

Consultas SQL: sintaxe e ordem das cláusulas

Gabarito: ERRADO (letra E). A consulta apresentada contém um erro de sintaxe: a cláusula WHERE deve vir antes da cláusula GROUP BY, e não depois. A ordem correta das cláusulas em uma consulta SQL é SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY. Portanto, a consulta SELECT projeto_id, COUNT(*) FROM tarefas GROUP BY projeto_id and WHERE projeto_id > 10; não é válida e não retornaria o número de tarefas por projeto.

A linguagem SQL (Structured Query Language) é a linguagem padrão para acesso e manipulação de bancos de dados relacionais. Ela é uma linguagem declarativa, ou seja, o usuário especifica o que deseja obter, sem precisar detalhar como o SGBD deve executar a consulta. Para entender o erro da questão, é fundamental conhecer a ordem lógica e sintática das cláusulas de um comando SELECT.

A ordem correta das cláusulas em uma consulta SQL é:

  1. SELECT – especifica as colunas que serão retornadas.

  2. FROM – especifica a(s) tabela(s) de onde os dados serão lidos.

  3. WHERE – filtra as linhas da tabela antes de qualquer agrupamento.

  4. GROUP BY – agrupa as linhas que possuem os mesmos valores nas colunas especificadas.

  5. HAVING – filtra os grupos formados pela cláusula GROUP BY.

  6. ORDER BY – ordena o resultado final.

A função de agregação COUNT(*) conta o número de linhas em cada grupo. Quando combinada com GROUP BY projeto_id, ela retorna a quantidade de tarefas para cada projeto. No entanto, a consulta da questão está com a ordem das cláusulas invertida: GROUP BY projeto_id and WHERE projeto_id > 10. O correto seria WHERE projeto_id > 10 GROUP BY projeto_id. Além disso, a palavra and não é usada para separar cláusulas; ela é um operador lógico usado dentro da cláusula WHERE para combinar condições.

A banca explora exatamente a confusão entre a ordem das cláusulas e o uso do operador lógico AND. O candidato que conhece a função do GROUP BY e do COUNT(*) pode ser induzido a marcar "Certo", sem perceber o erro de sintaxe. A pegadinha está em apresentar uma consulta que, se corrigida, faria exatamente o que o enunciado descreve, mas que, como está escrita, não é válida.

  1. 1SELECT
  2. 2FROM
  3. 3WHERE
  4. 4GROUP BY
  5. 5HAVING
  6. 6ORDER BY
LEVEL · soulevel.com.br

Item — ❌ ERRADO

A consulta SELECT projeto_id, COUNT(*) FROM tarefas GROUP BY projeto_id and WHERE projeto_id > 10; não retorna o número de tarefas por projeto, pois está sintaticamente incorreta. O erro está na ordem das cláusulas: a cláusula WHERE deve preceder a cláusula GROUP BY. A forma correta seria SELECT projeto_id, COUNT(*) FROM tarefas WHERE projeto_id > 10 GROUP BY projeto_id;. Além disso, a palavra and não é um separador de cláusulas; ela é um operador lógico utilizado dentro da cláusula WHERE para combinar múltiplas condições. Portanto, a consulta apresentada não seria executada corretamente em nenhum SGBD relacional.

NÃO CAIA NESSA!

A banca inverte a ordem das cláusulas WHERE e GROUP BY e insere a palavra and entre elas. O candidato que sabe que GROUP BY + COUNT(*) conta registros por grupo pode marcar "Certo" sem perceber o erro de sintaxe. Lembre-se: a ordem das cláusulas é fixa — WHERE vem antes de GROUP BY, e and é um operador lógico, não um conector de cláusulas.

PEGA ESSA DICA!

Para questões de SQL, decore a ordem das cláusulas: SELECTFROMWHEREGROUP BYHAVINGORDER BY. Se alguma cláusula estiver fora dessa ordem, a consulta está errada. Além disso, desconfie de consultas que usam and ou or fora da cláusula WHERE.

Gabarito: letra E

Link permanente: /questoes/qa699067