Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FGV 2023

Banco de DadosConsultas 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 é:
  1. ACidade Total de Processos ARACAJU 3 LAGARTO 1 ITABAIANA 1
  2. BCidade Total de Processos ITABAIANA 1 LAGARTO 1 ARACAJU 3
  3. CCidade Total de Processos ITABAIANA 1 ARACAJU 3 LAGARTO 1
  4. DNM_CIDADE ID_PROC ITABAIANA 1 ARACAJU 3 LAGARTO 1
  5. ENM_CIDADE COUNT(ID_PROC) ITABAIANA 1 ARACAJU 3 LAGARTO 1
Revelar gabarito e comentário

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.

  1. 1GROUP BY NM_CIDADE
  2. 2COUNT(ID_PROC) por grupo
  3. 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.

Gabarito: letra A

Link permanente: /questoes/fg161127