Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2023

Banco de DadosSQL
Código
fg071498
Banca
FGV
Órgão
TCE-SP
Ano
2023
Nível
Superior
Cargo
Agente da Fiscalização - TI
Observe a seguinte consulta SQL, feita no SQLite:SELECT imagem, avg(imagem) OVER (PARTITION BY grau) AS media_grau FROM historico_bijecao;O SQLite dispõe de vários tipos de função. Na consulta acima, a função avg foi usada como uma função do tipo:
  1. Acore;
  2. Bmath;
  3. Cwindow;
  4. Dordinary scalar;
  5. Eordinary aggregate.
Revelar gabarito e comentário

GabaritoC — window;

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”.

Funções em SQL: window functions

Gabarito: letra C. A função avg na consulta é utilizada com a cláusula OVER (PARTITION BY grau), o que a caracteriza como uma função de janela (window function), não como uma função de agregação comum. Em SQLite, as funções que usam OVER pertencem à categoria de funções de janela, que é um tipo distinto de função.

A consulta apresentada calcula a média da coluna imagem para cada partição definida por grau. A presença de OVER é o indicador-chave: sem ela, avg seria uma função de agregação ordinária; com ela, torna-se uma função analítica (window).

Função

Tipo no SQLite

Característica principal

Exemplo na consulta

avg com OVER

Window function

Opera sobre uma janela de linhas definida por PARTITION BY

avg(imagem) OVER (PARTITION BY grau)

avg sem OVER

Ordinary aggregate

Retorna um único valor para um grupo

avg(imagem)

Funções core

Core function

Funções internas básicas (ex.: length(), substr())

Não se aplica

Funções math

Math function

Subgrupo de funções escalares matemáticas (ex.: abs(), round())

Não se aplica

Funções escalares comuns

Ordinary scalar

Operam sobre um único valor (ex.: upper(), coalesce())

Não se aplica

Alternativa A — ❌ Incorreta

As funções core são funções internas básicas, como length(), substr(), etc. avg com OVER não se encaixa nessa categoria, pois é uma função de janela.

Alternativa B — ❌ Incorreta

Funções math são um subgrupo de funções escalares para operações matemáticas (ex.: abs(), round()). avg com OVER não é uma função matemática escalar.

Alternativa C — ✅ Correta ⟵ GABARITO

A função avg com OVER é uma função de janela (window function). Em SQLite, as funções que utilizam a cláusula OVER são classificadas como window functions, que realizam cálculos em um conjunto de linhas relacionadas à linha atual, mantendo as linhas individuais no resultado.

Alternativa D — ❌ Incorreta

Ordinary scalar refere-se a funções que operam sobre um único valor e retornam um único valor (ex.: upper(), coalesce()). avg com OVER opera sobre um conjunto de linhas (janela), não é escalar.

Alternativa E — ❌ Incorreta

Ordinary aggregate são funções de agregação comuns (sem OVER), como avg(coluna), que retornam um único valor para um grupo. Porém, na consulta o uso de OVER transforma a função em uma função de janela, não em uma agregação ordinária.

NÃO CAIA NESSA!

A banca aproveita que avg é normalmente uma função de agregação (categoria "ordinary aggregate") para induzir o candidato ao erro. A chave é perceber a presença de OVER — isso muda a classificação para window function.

PEGA ESSA DICA!

Em provas de SQL, sempre verifique se há cláusula OVER. Funções como SUM, AVG, COUNT com OVER são window functions. Sem OVER, são funções de agregação ordinárias. Grave essa distinção: ela cai com frequência.

Gabarito: letra C.

Link permanente: /questoes/fg071498