Questão de Banco de Dados — SQL — Quadrix 2025
- Código
- qg600024
- Banca
- Quadrix
- Órgão
- CRO-SP
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Desenvolvimento de Sistemas de Informação
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: ✅ CERTO. A cláusula GROUP BY do SQL é exatamente o mecanismo para agrupar linhas por um ou mais atributos — no caso, por dentista — e, combinada com funções de agregação como COUNT() ou SUM(), permite gerar relatórios de produção, como o número de atendimentos por profissional ou o total de procedimentos realizados. Essa é a função canônica do GROUP BY na linguagem SQL padrão (ANSI/ISO), suportada igualmente por MySQL, SQL Server e PostgreSQL.
O GROUP BY é uma das cláusulas centrais da consulta SQL, usada para transformar um conjunto de linhas em grupos, sobre os quais as funções de agregação operam. Quando você escreve SELECT dentista, COUNT(*) FROM atendimentos GROUP BY dentista, o SGBD divide as linhas da tabela atendimentos em grupos — um para cada valor distinto de dentista — e aplica a função COUNT(*) a cada grupo, retornando uma linha por dentista com o total de atendimentos. Sem o GROUP BY, uma função de agregação como COUNT(*) resumiria a tabela inteira em uma única linha; com ele, o resumo é feito por categoria.
A sintaxe básica é: SELECT colunas, FUNCAO(coluna) FROM tabela WHERE condição GROUP BY coluna;. A cláusula WHERE filtra linhas antes do agrupamento; o GROUP BY define os grupos; e a cláusula HAVING (opcional) filtra os grupos depois da agregação. Essa ordem é crucial: WHERE não pode usar funções de agregação (filtra linha a linha), enquanto HAVING pode, pois atua sobre os grupos já formados.
As funções de agregação embutidas no SQL são COUNT, SUM, MAX, MIN e AVG. COUNT retorna o número de linhas que atendem a um critério; SUM soma os valores de uma coluna numérica; MAX e MIN retornam o maior e o menor valor; AVG calcula a média. Todas resumem várias tuplas em uma síntese de tupla única — exatamente o que um relatório de produção precisa.
No contexto da clínica odontológica, um relatório de produção por dentista poderia ser gerado com uma consulta como:
SELECT dentista, COUNT(*) AS total_atendimentos, SUM(valor_procedimento) AS receita_total
FROM atendimentos
GROUP BY dentista;Essa consulta agrupa os atendimentos por dentista, conta quantos atendimentos cada um realizou e soma o valor dos procedimentos — um relatório de produção completo. A afirmação do enunciado descreve precisamente esse uso.
A pegadinha que a banca poderia explorar — e que não está presente aqui — seria inverter a função do GROUP BY com a do ORDER BY (que apenas ordena) ou afirmar que o GROUP BY sozinho agrega sem necessidade de funções de agregação. Mas o enunciado está correto ao afirmar que o GROUP BY agrupa e que as funções agregadas geram os relatórios.
A banca poderia tentar confundir o candidato trocando GROUP BY por ORDER BY (que só ordena, não agrupa) ou dizendo que o GROUP BY exige o HAVING para funcionar. Aqui, porém, a afirmação é direta e correta: GROUP BY agrupa e COUNT()/SUM() agregam. Fique atento à distinção WHERE (filtra linhas antes de agrupar) × HAVING (filtra grupos depois de agregar) — é o erro clássico nesse tema.
✅ CERTO. A cláusula GROUP BY é o mecanismo padrão do SQL para agrupar registros por um atributo (dentista) e, com funções de agregação como COUNT() ou SUM(), gerar relatórios de produção — exatamente o que a assertiva descreve.
Gabarito: ✅ CERTO
Link permanente: /questoes/qg600024