Pular para o conteúdo principal

Questão de Banco de Dados — SQL — Quadrix 2025

Banco de DadosSQL
Código
qg600024
Banca
Quadrix
Órgão
CRO-SP
Ano
2025
Nível
Superior
Cargo
Analista de Desenvolvimento de Sistemas de Informação
Uma clínica odontológica de médio porte decidiu modernizar o seu sistema de prontuário eletrônico e agendamento de consultas, visando melhorar a gestão de atendimentos, reduzir retrabalho e integrar as informações clínicas dos pacientes em uma base relacional centralizada. A equipe de TI contratada adotará uma metodologia ágil para o desenvolvimento do novo sistema, cujo banco de dados será compatível com MySQL, SQL Server e PostgreSQL.Com base nessa situação hipotética, julgue os itens seguintes.A cláusula GROUP BY do SQL pode ser utilizada para agrupar atendimentos odontológicos por dentista, permitindo aplicar funções agregadas como COUNT() ou SUM() para gerar os relatórios de produção.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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

SQL: GROUP BY e funções de agregação

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.

  1. 1FROM (tabela)
  2. 2WHERE (filtra linhas)
  3. 3GROUP BY (agrupa)
  4. 4HAVING (filtra grupos)
  5. 5SELECT (agrega)
LEVEL · soulevel.com.br
NÃO CAIA NESSA!

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