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
qa699071
Banca
Quadrix
Órgão
CRO SP
Ano
2025
Cargo
Ana ( )
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 o item seguinte.   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”.

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

Gabarito: CERTO (letra C). A cláusula GROUP BY do SQL é exatamente o mecanismo para agrupar linhas que compartilham valores em uma ou mais colunas — como o dentista responsável pelo atendimento — e, combinada com funções de agregação (COUNT, SUM, AVG, MAX, MIN), permite gerar relatórios de produção por profissional. Essa é a função canônica da cláusula, prevista no padrão SQL/ANSI e suportada por MySQL, SQL Server e PostgreSQL.

A linguagem SQL é declarativa: o usuário especifica o que deseja obter, não como o SGBD deve executar. Dentro do comando SELECT, as cláusulas têm papéis bem definidos: WHERE filtra linhas antes do agrupamento; GROUP BY agrupa as linhas sobreviventes pelos valores das colunas indicadas; HAVING filtra grupos após a agregação; e ORDER BY ordena o resultado final. As funções de agregação (COUNT, SUM, AVG, MAX, MIN) resumem várias tuplas em uma única síntese — por exemplo, contar quantos atendimentos cada dentista realizou ou somar o valor produzido por cada um.

No caso da clínica odontológica, imagine uma tabela atendimentos com as colunas id_atendimento, id_dentista, data e valor. Para saber quantos atendimentos cada dentista realizou, a consulta seria:

SELECT id_dentista, COUNT(*) AS total_atendimentos
FROM atendimentos
GROUP BY id_dentista;

Para somar o valor produzido por dentista:

SELECT id_dentista, SUM(valor) AS producao_total
FROM atendimentos
GROUP BY id_dentista;

A cláusula GROUP BY agrupa todas as linhas com o mesmo id_dentista em um único grupo, e a função de agregação é aplicada a cada grupo, gerando uma linha por dentista no resultado. É exatamente isso que o enunciado descreve: agrupar atendimentos por dentista e aplicar COUNT ou SUM para relatórios de produção.

A distinção que importa aqui é entre WHERE e HAVING: o WHERE filtra linhas individuais antes do agrupamento; o HAVING filtra grupos depois da agregação. Por exemplo, para listar apenas os dentistas com mais de 50 atendimentos, usaríamos HAVING COUNT(*) > 50. Trocar um pelo outro muda o resultado — o WHERE não enxerga totais de grupo, e o HAVING não pode filtrar linhas individuais.

A pegadinha que a banca poderia explorar seria afirmar que o GROUP BY ordena o resultado (isso é papel do ORDER BY) ou que o WHERE pode filtrar grupos (isso é papel do HAVING). Nesta questão, porém, a afirmação é tecnicamente correta e descreve o uso clássico da cláusula.

  1. 1FROM
  2. 2WHERE
  3. 3GROUP BY
  4. 4HAVING
  5. 5SELECT
  6. 6ORDER BY
LEVEL · soulevel.com.br
NÃO CAIA NESSA!

A banca poderia tentar confundir o candidato trocando o papel do GROUP BY pelo do ORDER BY (que ordena, não agrupa) ou afirmando que o WHERE filtra grupos (o que é função do HAVING). Aqui, porém, a afirmação está correta: GROUP BY agrupa e as funções de agregação resumem os grupos.

PEGA ESSA DICA!

Para questões de SQL, memorize a ordem lógica de execução das cláusulas: FROMWHEREGROUP BYHAVINGSELECTORDER BY. Isso ajuda a saber onde cada filtro se aplica: WHERE antes do agrupamento, HAVING depois.

CERTO. A cláusula GROUP BY é exatamente o mecanismo para agrupar atendimentos por dentista, e as funções COUNT e SUM são as funções de agregação adequadas para gerar relatórios de produção.

Gabarito: letra C

Link permanente: /questoes/qa699071