Pular para o conteúdo principal

Questão de Banco de Dados — PostgreSQL — FCC 2022

Banco de DadosPostgreSQL
Código
fc064851
Banca
FCC
Órgão
TRT - 17ª Região (ES)
Ano
2022
Cargo
Técnico Judiciário - Área Apoio Especializado Especialidade - Tecnologia da Informação
Em um banco de dados PostgreSQL 13, funcionando em condições ideais, existe a tabela Cidades que possui os campos NomeCidade, Estado, Populacao e NumJuizes. Um Técnico foi solicitado a apresentar todos os registros em que constem o NomeCidade cujo Estado seja ES e que tenha NumJuizes maior que 50. O comando SQL correto para isso é:
  1. ASELECT * FROM Cidades WHERE Estado='ES' GROUP BY NomeCidade HAVING NumJuizes > 50;
  2. BSELECT NomeCidade, Estado, NumJuizes FROM Cidades WHERE Estado='ES' AND HAVING NumJuizes > 50;
  3. CSELECT NomeCidade, Estado, NumJuizes FROM Cidades WHERE Estado='ES' & NumJuizes > 50;
  4. DSELECT * FROM Cidades WHERE Estado='ES' HAVING NumJuizes > 50;
  5. ESELECT * FROM Cidades WHERE Estado='ES' GROUP BY (NomeCidade, Estado AND NumJuizes) HAVING NumJuizes > 50;
Revelar gabarito e comentário

GabaritoA — SELECT * FROM Cidades WHERE Estado='ES' GROUP BY NomeCidade HAVING NumJuizes > 50;

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: Cláusulas SELECT, WHERE, GROUP BY e HAVING

Gabarito: letra A. A alternativa utiliza corretamente as cláusulas WHERE (para filtrar Estado='ES') e HAVING (para filtrar NumJuizes > 50) sobre o resultado de GROUP BY NomeCidade. Embora o uso de GROUP BY e HAVING seja desnecessário para este caso (poderia usar apenas WHERE com AND), a sintaxe é válida no PostgreSQL desde que as colunas não agregadas sejam funcionalmente dependentes da coluna de agrupamento.

Alternativa A — ✅ Correta ⟵ GABARITO

A consulta usa WHERE Estado='ES' para selecionar linhas do estado ES, depois agrupa por NomeCidade e aplica HAVING NumJuizes > 50. No PostgreSQL, quando a coluna de agrupamento é uma chave (ou única), as demais colunas são consideradas dependentes, permitindo o uso de SELECT *. O HAVING filtra os grupos resultantes. É a única alternativa com sintaxe executável.

Alternativa B — ❌ Incorreta

A cláusula HAVING não pode ser precedida por AND após WHERE. A sintaxe correta seria WHERE Estado='ES' HAVING NumJuizes > 50 (sem AND), mas mesmo assim HAVING exige GROUP BY ou agregação.

Alternativa C — ❌ Incorreta

O operador & não é válido em SQL para conjunção lógica. O operador correto é AND.

Alternativa D — ❌ Incorreta

O uso de HAVING sem GROUP BY e com SELECT * é inválido, pois o HAVING só pode ser usado com agregações ou em conjunto com GROUP BY. A consulta geraria erro de sintaxe.

Alternativa E — ❌ Incorreta

A sintaxe GROUP BY (NomeCidade, Estado AND NumJuizes) é incorreta. A cláusula GROUP BY aceita uma lista de colunas separadas por vírgula, não expressões com AND.

NÃO CAIA NESSA!

A banca tenta confundir o candidato com o uso desnecessário de GROUP BY/HAVING e operadores inválidos. Lembre-se: para filtrar registros individuais, use WHERE; GROUP BY e HAVING são para dados agregados.

Gabarito: letra A

Link permanente: /questoes/fc064851