Questão de Banco de Dados — SQL — FGV 2023
- Código
- fg071498
- Banca
- FGV
- Órgão
- TCE-SP
- Ano
- 2023
- Nível
- Superior
- Cargo
- Agente da Fiscalização - TI
- Acore;
- Bmath;
- Cwindow;
- Dordinary scalar;
- Eordinary aggregate.
GabaritoC — window;
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 |
|---|---|---|---|
| Window function | Opera sobre uma janela de linhas definida por |
|
| Ordinary aggregate | Retorna um único valor para um grupo |
|
Funções core | Core function | Funções internas básicas (ex.: | Não se aplica |
Funções math | Math function | Subgrupo de funções escalares matemáticas (ex.: | Não se aplica |
Funções escalares comuns | Ordinary scalar | Operam sobre um único valor (ex.: | Não se aplica |
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.
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.
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.
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.
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.
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.
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