FC ConcursosFC Concursos

Questão FC372816

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 solicita

Linguagem SQL

FCC · 2022

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. SELECT * FROM Cidades WHERE Estado='ES' GROUP BY NomeCidade HAVING NumJuizes > 50;
  2. SELECT NomeCidade, Estado, NumJuizes FROM Cidades WHERE Estado='ES' AND HAVING NumJuizes > 50;
  3. SELECT NomeCidade, Estado, NumJuizes FROM Cidades WHERE Estado='ES' & NumJuizes > 50;
  4. SELECT * FROM Cidades WHERE Estado='ES' HAVING NumJuizes > 50;
  5. SELECT * FROM Cidades WHERE Estado='ES' GROUP BY (NomeCidade, Estado AND NumJuizes) HAVING NumJuizes > 50;
Mostrar resposta e comentário

Gabarito

A

Comentário do professor

A alternativa apresenta o comando: SELECT * FROM Cidades WHERE Estado='ES' GROUP BY NomeCidade HAVING NumJuizes > 50;

Em termos de intenção, WHERE filtra linhas (Estado='ES'), GROUP BY agrupa por NomeCidade e HAVING filtra grupos. Porém, em PostgreSQL 13 existe uma regra importante: todos os itens retornados no SELECT devem ser ou agregados ou constar do GROUP BY.

Aqui o uso de SELECT * com GROUP BY NomeCidade tenta retornar colunas (p.ex. Estado, Populacao, NumJuizes) que não estão no agrupamento nem são agregadas, gerando erro. Além disso, a condição em HAVING refere-se a uma coluna não agregada (NumJuizes), o que também é inválido sem agregação ou inclusão no GROUP BY.

Portanto, apesar de empregar corretamente nomes de cláusulas, essa consulta é incompatível com as restrições de agregação do PostgreSQL 13 e não produzirá o resultado desejado sem ajustes.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo