Questão nº 62
Questão de Tecnologia da Informação · FGV TCE-SP 2023 (nº 62)
Observe a seguinte consulta SQL, feita no SQLite:
```sql
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:
- Acore;
- Bmath;
- Cwindow; (alternativa correta)
- Dordinary scalar;
- Eordinary aggregate.
Resposta comentada
Gabarito Alternativa C
Uma função de janela (window function) no SQL realiza cálculos em um conjunto de linhas relacionadas à linha atual (a "janela"), mas, ao contrário das funções agregadas comuns, ela não agrupa as linhas, retornando um valor para cada linha processada. A cláusula OVER é o que define uma função como sendo de janela.
- A) Incorreta: Funções "core" são as funções internas básicas do SQLite (como
AVG,COUNT,LENGTH), mas "core" não descreve o tipo de uso da função neste contexto específico comOVER. - B) Incorreta: "Math" (matemática) descreve a natureza da operação (
AVGé uma média), mas não é uma classificação de tipo de função no SQL como "janela" ou "agregada". - (C) Correta: A presença da cláusula
OVER (PARTITION BY grau)transforma a funçãoAVGem uma função de janela. Ela calcula a média daimagempara cada grupo definido porgrau, mas retorna esse valor para cada linha dentro do grupo, sem colapsar as linhas. - D) Incorreta: Uma função escalar ordinária opera em valores de uma única linha e retorna um único valor para essa linha (ex:
LENGTH('texto')). A funçãoAVGcomOVERopera sobre um conjunto de linhas (a janela), não apenas uma. - E) Incorreta: Esta é a armadilha.
AVGé, por natureza, uma função agregada. No entanto, quando usada com a cláusulaOVER, ela deixa de ser uma "função agregada ordinária" (que agruparia as linhas e retornaria um único valor por grupo) e passa a ser uma função de janela, pois retorna um valor para cada linha da consulta, mantendo a granularidade dos dados originais.
Fonte: FGV TCE-SP 2023 Agente da Fiscalização - TI (Caderno Tipo 1). Reproduzida para fins de estudo.