Pular para o conteúdo principal

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

Banco de DadosSQL
Código
qg598689
Banca
Quadrix
Órgão
CRM-MS
Ano
2025
Nível
Superior
Cargo
Analista de Informática
O Hospital Campo Grande está implementando um novo sistema de banco de dados para gerenciar informações sobre médicos, pacientes e atendimentos. O banco de dados apresenta as tabelas a seguir.

Imagem da questão
Com relação à situação hipotética apresentada e aos comandos SQL, julgue o item seguinte.O seguinte comando retorna o nome dos médicos e a quantidade de atendimentos que cada um realizou, ordenando pela maior quantidade de atendimentos:Imagem associada para resolução da questã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”.

Consulta SQL com agregação e ordenação

Gabarito: CERTO (letra C). O comando SQL descrito no enunciado está correto: ele seleciona o nome dos médicos e a quantidade de atendimentos de cada um, agrupando por médico e ordenando o resultado pela quantidade de atendimentos em ordem decrescente, exatamente como afirma o item. A estrutura SELECT ... COUNT(*) ... GROUP BY ... ORDER BY ... DESC é a forma padrão de responder a essa consulta em SQL.

A questão cobra o domínio de três cláusulas fundamentais da linguagem SQL, que aparecem combinadas em uma única consulta: GROUP BY, funções de agregação (COUNT) e ORDER BY. Vamos entender cada uma delas e como elas se encaixam para produzir o resultado descrito.

1. O que é a consulta pedida?

O enunciado quer, para cada médico, o seu nome e o total de atendimentos realizados. Isso exige:

  • Selecionar o nome do médico (coluna da tabela de médicos).

  • Contar quantos atendimentos cada médico possui (registros na tabela de atendimentos).

  • Agrupar os resultados por médico, para que a contagem seja feita individualmente.

  • Ordenar o resultado final pela quantidade de atendimentos, do maior para o menor.

2. A função de agregação COUNT

A função COUNT é uma função de agregação que retorna o número de linhas que atendem a um critério. No contexto da consulta, COUNT(*) conta todas as linhas do grupo, ou seja, o número de atendimentos de cada médico. É a ferramenta certa para responder "quantos atendimentos cada um realizou".

3. A cláusula GROUP BY

A cláusula GROUP BY é usada para agrupar linhas que têm os mesmos valores em colunas específicas. Ao agrupar por nome_medico, o banco de dados cria um grupo para cada médico distinto, e a função COUNT é aplicada a cada grupo separadamente. Sem o GROUP BY, a função de agregação seria aplicada a todas as linhas da tabela de uma só vez, retornando apenas um total geral, o que não atende ao pedido.

4. A cláusula ORDER BY

A cláusula ORDER BY é usada para ordenar o resultado da consulta com base em uma ou mais colunas. Por padrão, a ordenação é crescente (ASC). Para ordenar pela maior quantidade de atendimentos, é necessário usar a palavra-chave DESC, que ordena de forma decrescente. O comando ORDER BY quantidade_atendimentos DESC coloca o médico com mais atendimentos no topo da lista.

5. A estrutura completa do comando

Um comando SQL que atende a todos os requisitos teria a seguinte estrutura geral:

SELECT m.nome_medico, COUNT(a.id_atendimento) AS quantidade_atendimentos
FROM medicos m
JOIN atendimentos a ON m.id_medico = a.id_medico
GROUP BY m.nome_medico
ORDER BY quantidade_atendimentos DESC;

Essa consulta:

  1. Seleciona o nome do médico e a contagem de atendimentos (com um apelido quantidade_atendimentos).

  2. Junta as tabelas de médicos e atendimentos pela chave estrangeira.

  3. Agrupa os resultados por nome do médico.

  4. Conta os atendimentos de cada grupo.

  5. Ordena o resultado final pela quantidade de atendimentos em ordem decrescente.

O comando descrito no enunciado, portanto, está correto.

A pegadinha desta questão é justamente a combinação das cláusulas. O candidato pode se confundir e achar que falta algo, como uma condição de junção (JOIN ou WHERE), ou que a ordenação deveria ser crescente. No entanto, a descrição do comando, embora não mostre o código completo, descreve exatamente a função de cada cláusula necessária para produzir o resultado esperado.

NÃO CAIA NESSA!

A banca pode tentar confundir o candidato sobre a ordem de execução das cláusulas. Lembre-se: o GROUP BY é executado antes do ORDER BY. Primeiro, os dados são agrupados e a agregação é calculada; só depois o resultado é ordenado. Além disso, a ordenação padrão é crescente (ASC); para obter a maior quantidade primeiro, é obrigatório o uso de DESC.

Item — ✅ CERTO

O item afirma que o comando retorna o nome dos médicos e a quantidade de atendimentos, ordenando pela maior quantidade. Isso é exatamente o que uma consulta com SELECT nome_medico, COUNT(*) ... GROUP BY nome_medico ORDER BY COUNT(*) DESC faz. A descrição está tecnicamente correta e atende ao que foi pedido.

Gabarito: letra C (CERTO).

Link permanente: /questoes/qg598689