Questão nº 53
Questão de Tecnologia da Informação · FCC TRT-12 2023 (nº 53)
Considere uma tabela denominada `Cidadao` e as colunas `Nome_Cidadao` e `Valor_Recebido`.
Para obter a média dos valores maiores que 200 recebidos pelos cidadãos, um Analista deve utilizar o comando
- A`SELECT AVG(Valor_Recebido > 200) FROM Cidadao;`
- B`SELECT AVG(Valor_Recebido) FROM Cidadao WHERE Valor_Recebido > 200;` (alternativa correta)
- C`SELECT AVG(Valor_Recebido) > 200 FROM Cidadao;`
- D`SELECT FROM Cidadao AVG(Valor_Recebido) > 200;`
- E`SELECT Nome_Cidadao and AVG(Valor_Recebido) FROM Cidadao WHERE Valor_Recebido > 200;`
Resposta comentada
Gabarito Alternativa B
Para calcular a média de valores em SQL, usamos a função `AVG()`. Para considerar apenas os valores que atendem a uma condição específica antes de calcular a média, usamos a cláusula `WHERE`.
(A) Incorreta: Esta alternativa calcula a média de valores booleanos (verdadeiro/falso). A expressão `Valor_Recebido > 200` retorna `1` (para verdadeiro) ou `0` (para falso) para cada linha. A função `AVG()` então calcula a média desses `1`s e `0`s, o que resulta na proporção de valores maiores que 200, e não na média dos próprios valores. Esta é a armadilha mais comum, pois parece filtrar, mas na verdade transforma o dado antes da média.
(B) Correta: Esta é a forma correta. Primeiro, a cláusula `WHERE Valor_Recebido > 200` filtra todas as linhas, selecionando apenas os cidadãos que receberam um valor maior que 200. Em seguida, a função `AVG(Valor_Recebido)` calcula a média apenas dos `Valor_Recebido` dessas linhas filtradas, entregando exatamente o que foi pedido.
(C) Incorreta: Esta alternativa primeiro calcula a média de todos os `Valor_Recebido` da tabela e, em seguida, verifica se essa média total é maior que 200, retornando um resultado booleano (`TRUE` ou `FALSE`). Não é o que a questão pede.
(D) Incorreta: Esta alternativa possui uma sintaxe SQL inválida. A cláusula `SELECT` deve listar as colunas ou expressões a serem selecionadas antes da cláusula `FROM`.
(E) Incorreta: Esta alternativa tenta selecionar uma coluna não agregada (`Nome_Cidadao`) junto com uma função agregada (`AVG(Valor_Recebido)`) sem usar a cláusula `GROUP BY`. Além disso, o operador `and` não é usado para separar colunas na cláusula `SELECT` (deveria ser uma vírgula `,`).
Fonte: FCC TRT-12 2023 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 003). Reproduzida para fins de estudo.