Questão de Banco de Dados — SQL — Quadrix 2025
- Código
- qg598689
- Banca
- Quadrix
- Órgão
- CRM-MS
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Informática


- CCerto
- EErrado


GabaritoC — Certo
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:
Seleciona o nome do médico e a contagem de atendimentos (com um apelido quantidade_atendimentos).
Junta as tabelas de médicos e atendimentos pela chave estrangeira.
Agrupa os resultados por nome do médico.
Conta os atendimentos de cada grupo.
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.
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.
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