Questão de Banco de Dados — Consultas e Comandos em SQL — FGV 2023
Banco de Dados›Consultas e Comandos em SQL
Código
fg161127
Banca
FGV
Órgão
TJ SE
Ano
2023
Cargo
TJ ( )
Observe o seguinte script SQL. CREATE TABLE TB_PR (ID_PROC int,NM_CIDADE VARCHAR2(50)); INSERT INTO TB_PR (ID_PROC, NM_CIDADE) VALUES (1, 'ARACAJU'); INSERT INTO TB_PR (ID_PROC, NM_CIDADE) VALUES (2, 'ITABAIANA '); INSERT INTO TB_PR (ID_PROC, NM_CIDADE) VALUES (3, 'LAGARTO'); INSERT INTO TB_PR (ID_PROC, NM_CIDADE) VALUES (4, 'ARACAJU'); INSERT INTO TB_PR (ID_PROC, NM_CIDADE) VALUES (5, 'ARACAJU'); SELECT NM_CIDADE AS "Cidade", COUNT(ID_PROC) AS "Total de Processos" FROM TB_PR GROUP BY NM_CIDADE ORDER BY COUNT(ID_PROC)DESC; O resultado da execução do script SQL apresentado é:
ACidade Total de Processos ARACAJU 3 LAGARTO 1 ITABAIANA 1
BCidade Total de Processos ITABAIANA 1 LAGARTO 1 ARACAJU 3
CCidade Total de Processos ITABAIANA 1 ARACAJU 3 LAGARTO 1
GabaritoA — Cidade
Total de Processos
ARACAJU
3
LAGARTO
1
ITABAIANA
1
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, COUNT e ORDER BY
Gabarito: letra A. A consulta agrupa as linhas por NM_CIDADE, conta quantos processos cada cidade possui com COUNT(ID_PROC) e ordena o resultado em ordem decrescente de contagem (ORDER BY COUNT(ID_PROC) DESC). Como 'ARACAJU' aparece 3 vezes, 'ITABAIANA' e 'LAGARTO' aparecem 1 vez cada, o resultado é: ARACAJU (3), LAGARTO (1), ITABAIANA (1).
A consulta SQL apresentada é um exemplo clássico de agregação de dados. O comando GROUP BY agrupa as linhas da tabela que possuem o mesmo valor na coluna especificada, e as funções de agregação, como COUNT, SUM, AVG, MAX e MIN, são aplicadas a cada grupo. No caso, COUNT(ID_PROC) conta o número de linhas em cada grupo, ou seja, o número de processos por cidade.
A cláusula ORDER BY é usada para ordenar o resultado da consulta. Quando combinada com uma função de agregação, como COUNT, ela ordena os grupos com base no valor agregado. O sufixo DESC indica ordem decrescente, do maior para o menor. Sem o DESC, a ordem seria crescente (ASC), do menor para o maior.
Vamos analisar os dados da tabela TB_PR:
ID_PROC 1: ARACAJU
ID_PROC 2: ITABAIANA
ID_PROC 3: LAGARTO
ID_PROC 4: ARACAJU
ID_PROC 5: ARACAJU
Ao agrupar por NM_CIDADE, temos três grupos: ARACAJU (3 processos), ITABAIANA (1 processo) e LAGARTO (1 processo). A ordenação decrescente por contagem coloca ARACAJU em primeiro lugar, seguido por LAGARTO e ITABAIANA (ambos com 1). A ordem entre LAGARTO e ITABAIANA não é determinada pela consulta, pois ambos têm a mesma contagem; o banco pode retornar em qualquer ordem. A alternativa A é a única que apresenta essa sequência correta.
NÃO CAIA NESSA!
A banca tenta confundir o candidato com a ordem dos elementos que têm a mesma contagem (LAGARTO e ITABAIANA). Como a consulta não especifica um critério de desempate, a ordem entre eles é indefinida — qualquer uma é aceitável. A pegadinha está em achar que a ordem alfabética é garantida, mas o ORDER BY só ordena pela contagem, não pelo nome da cidade.
1GROUP BY NM_CIDADE
2COUNT(ID_PROC) por grupo
3ORDER BY contagem DESC
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
A alternativa A apresenta exatamente o resultado esperado: ARACAJU com 3 processos, LAGARTO com 1 e ITABAIANA com 1. A ordem entre LAGARTO e ITABAIANA é aceitável, pois ambos têm a mesma contagem e não há critério de desempate. O cabeçalho das colunas também está correto: "Cidade" e "Total de Processos", conforme os apelidos definidos no SELECT.
Alternativa B — ❌ Incorreta
A alternativa B coloca ITABAIANA antes de LAGARTO, mas ambos têm a mesma contagem (1). A ordem entre eles é indefinida, então essa sequência também seria aceitável. No entanto, o erro está em colocar ARACAJU por último, com 3 processos, quando deveria vir primeiro, pois tem a maior contagem. A ordenação decrescente exige que o maior valor venha primeiro.
Alternativa C — ❌ Incorreta
A alternativa C também coloca ITABAIANA antes de ARACAJU, mas ARACAJU tem 3 processos, o maior valor, e deveria vir primeiro. A ordem entre ITABAIANA e LAGARTO é indefinida, mas a posição de ARACAJU está errada.
Alternativa D — ❌ Incorreta
A alternativa D usa os nomes originais das colunas (NM_CIDADE e ID_PROC) em vez dos apelidos definidos no SELECT ("Cidade" e "Total de Processos"). Além disso, a coluna ID_PROC não é uma agregação, mas a consulta retorna COUNT(ID_PROC). O cabeçalho está errado e a ordem também não segue a contagem decrescente.
Alternativa E — ❌ Incorreta
A alternativa E usa COUNT(ID_PROC) como nome de coluna, mas o SELECT define o apelido "Total de Processos". O cabeçalho está errado. Além disso, a ordem não segue a contagem decrescente, pois ARACAJU (3) deveria vir primeiro.