Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FCC 2017

Banco de DadosSQL
Código
fc035593
Banca
FCC
Órgão
ARTESP
Ano
2017
Nível
Médio
Cargo
Agente de Fiscalização à Regulação de Transporte - Tecnologia de Informação
Considere, por hipótese, que no banco de dados da ARTESP exista uma tabela denominada TabPSAD com os campos IdRodovia, Posto_Servico, Area_Descanso, Vagas_Estacionamento. Um Agente de Fiscalização à Regulação de Transporte utilizou os comandos SQL para fazer consultas aos dados desta tabela:I. SELECT IdRodovia FROM TabPSAD WHERE Vagas_Estacionamento > 300;II. SELECT COUNT (DISTINCT IdRodovia) FROM TabPSAD;III. SELECT IdRodovia, ADD (Vagas_Estacionamento) FROM TabPSAD GROUP BY Area_Descanso;Está correto o que consta em
  1. AII, apenas.
  2. BI e III, apenas.
  3. CIII, apenas.
  4. DI e II, apenas.
  5. EI, II e III.
Revelar gabarito e comentário

GabaritoD — I e II, apenas.

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: Comandos de consulta (SELECT) com funções de agregação e GROUP BY

Gabarito: letra D — estão corretos apenas os comandos I e II. O comando I é um SELECT simples válido. O comando II usa corretamente COUNT(DISTINCT ...). O comando III está errado: 'ADD' não é função de agregação SQL e o GROUP BY não inclui a coluna IdRodovia, o que viola a regra de agregação.

Item

Comando SQL

Correto?

Motivo

I

SELECT IdRodovia FROM TabPSAD WHERE Vagas_Estacionamento > 300;

✅ Sim

SELECT simples válido, com filtro WHERE correto.

II

SELECT COUNT(DISTINCT IdRodovia) FROM TabPSAD;

✅ Sim

COUNT com DISTINCT conta valores únicos; sintaxe aceita.

III

SELECT IdRodovia, ADD(Vagas_Estacionamento) FROM TabPSAD GROUP BY Area_Descanso;

❌ Não

Função ADD inexistente; coluna IdRodovia não agregada nem no GROUP BY.

1I. SELECT simples
Válido
Filtro WHERE
2II. COUNT(DISTINCT)
Válido
Conta valores distintos
3III. SELECT com GROUP BY
ADD inexistente
IdRodovia sem GROUP BY
Comandos SQL
LEVELsoulevel.com.br
Comandos SQL: I. SELECT simples (Válido, Filtro WHERE); II. COUNT(DISTINCT) (Válido, Conta valores distintos); III. SELECT com GROUP BY (ADD inexistente, IdRodovia sem GROUP BY)

Item I — ✅ Correto

O comando SELECT IdRodovia FROM TabPSAD WHERE Vagas_Estacionamento > 300; é uma consulta perfeitamente válida. Ele seleciona apenas a coluna IdRodovia da tabela TabPSAD, filtrando as linhas onde o valor de Vagas_Estacionamento seja superior a 300. Não há erro de sintaxe ou semântica.

Item II — ✅ Correto

O comando SELECT COUNT (DISTINCT IdRodovia) FROM TabPSAD; conta o número de valores distintos (não nulos) da coluna IdRodovia. A função COUNT é uma função de agregação que, combinada com DISTINCT, ignora duplicatas. A sintaxe com espaço entre COUNT e o parêntese é aceita pela maioria dos bancos de dados (embora o padrão SQL prefira COUNT(DISTINCT IdRodovia), a versão com espaço também é válida). Portanto, o comando é correto.

Item III — ❌ Incorreto

O comando SELECT IdRodovia, ADD (Vagas_Estacionamento) FROM TabPSAD GROUP BY Area_Descanso; contém dois erros graves:

  1. Função 'ADD' inexistente: Não existe uma função de agregação chamada ADD em SQL. O mais provável é que a intenção fosse usar SUM (soma). A função ADD não é reconhecida por nenhum SGBD padrão.

  1. Coluna não agregada e não incluída no GROUP BY: Mesmo que substituíssemos ADD por SUM, ainda haveria erro: a coluna IdRodovia aparece na lista do SELECT, mas não está sendo agregada (não está dentro de uma função de agregação) nem faz parte da cláusula GROUP BY (que agrupa por Area_Descanso). A regra é: toda coluna que aparece no SELECT sem função de agregação deve constar no GROUP BY. Como IdRodovia não está agregada nem no GROUP BY, o comando geraria erro (a menos que o SGBD permitisse extensões, mas o padrão SQL não).

Consequentemente, o item III está incorreto.

Conclusão: Estão corretos apenas os itens I e II. Portanto, a alternativa correta é a letra D.


PEGA ESSA DICA!

Em questões de SQL que envolvem GROUP BY, lembre-se sempre da regra: todas as colunas da lista SELECT que não são argumentos de funções de agregação (SUM, COUNT, AVG, MAX, MIN etc.) devem aparecer na cláusula GROUP BY. Além disso, fique atento a nomes de funções inventados pela banca, como ADD – a banca espera que você conheça as funções reais: SUM, COUNT, AVG, MAX, MIN.

Link permanente: /questoes/fc035593