Questão de Banco de Dados — SQL — Quadrix 2025
- Código
- qg594440
- Banca
- Quadrix
- Órgão
- CAU-MA
- Ano
- 2025
- Nível
- Médio
- Cargo
- Assistente de Tecnologia da Informação
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). A consulta apresentada contém um erro de sintaxe: a cláusula WHERE deve vir antes do GROUP BY, e não depois. Além disso, a palavra and não é usada para conectar GROUP BY a WHERE — a ordem correta é SELECT ... FROM ... WHERE ... GROUP BY .... Portanto, a consulta não é válida e não retorna o número de tarefas por projeto.
A linguagem SQL (Structured Query Language) é a principal ferramenta para manipular dados em bancos de dados relacionais. Uma consulta SELECT é composta por cláusulas que definem quais dados serão recuperados e como serão processados. A ordem lógica de execução dessas cláusulas é fundamental para o resultado final. No comando em questão, o estagiário tentou agrupar os registros por projeto_id e, em seguida, filtrar os grupos com projeto_id > 10. No entanto, a sintaxe utilizada está incorreta.
A cláusula GROUP BY é usada para agrupar linhas que têm os mesmos valores em uma ou mais colunas, permitindo que funções de agregação como COUNT, SUM, AVG, MAX e MIN sejam aplicadas a cada grupo. A cláusula WHERE é usada para filtrar linhas antes do agrupamento, enquanto a cláusula HAVING é usada para filtrar grupos depois do agrupamento. A ordem correta das cláusulas em uma consulta SQL é: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY. Qualquer desvio dessa ordem resulta em erro de sintaxe.
No caso apresentado, a consulta SELECT projeto_id, COUNT(*) FROM tarefas GROUP BY projeto_id and WHERE projeto_id > 10; está incorreta por dois motivos principais: (1) a cláusula WHERE está posicionada após o GROUP BY, o que viola a ordem sintática; (2) a palavra and é usada indevidamente para conectar as cláusulas, quando na verdade elas devem ser separadas por espaço. A forma correta de escrever essa consulta seria SELECT projeto_id, COUNT(*) FROM tarefas WHERE projeto_id > 10 GROUP BY projeto_id;. Essa consulta retornaria o número de tarefas por projeto, mas apenas para os projetos com projeto_id maior que 10.
A banca explora exatamente a confusão entre a ordem das cláusulas e o uso incorreto de conectivos. O candidato que conhece a sintaxe básica do SQL identifica imediatamente o erro, mas aquele que apenas decora o significado de GROUP BY e COUNT pode ser induzido a marcar como correto. É essencial dominar a ordem lógica das cláusulas e a função de cada uma para evitar esse tipo de pegadinha.
A banca inverte a ordem das cláusulas WHERE e GROUP BY e insere a palavra and como se fosse um conector válido. O candidato que sabe que WHERE vem antes de GROUP BY percebe o erro na hora. Lembre-se: a ordem é SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY. Com treino, você identifica essas inversões de longe 💪.
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 contém um erro de sintaxe. A cláusula WHERE deve preceder o GROUP BY, e a palavra and não é utilizada para conectar essas cláusulas. A forma correta seria SELECT projeto_id, COUNT(*) FROM tarefas WHERE projeto_id > 10 GROUP BY projeto_id;. Portanto, a afirmação está incorreta.
Gabarito: letra E (ERRADO).
Link permanente: /questoes/qg594440