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:
- A)core;
Errada, porque core nao e a classificacao de uso da funcao avg nessa consulta, mas sim uma categoria geral de recursos basicos do SQLite.
- B)math;
Errada, porque math se refere a funcoes matematicas especificas, e nao ao comportamento analitico de avg com OVER.
- C)window;
Certa, porque o uso de OVER (PARTITION BY ...) transforma a expressao em uma funcao de janela (window function).
- D)ordinary scalar;
Errada, porque ordinary scalar retorna um valor por linha sem agregacao por grupo nem particionamento de janela.
- E)ordinary aggregate.
Errada, porque avg pode ser uma agregada ordinaria sem OVER, mas aqui ela foi usada com OVER, entao o comportamento e de janela.
Gabarito: C
No SQLite, a mesma função pode mudar de “papel” conforme o jeito que voce a usa na consulta. O segredo aqui esta no trecho OVER (PARTITION BY grau): quando uma funcao aparece com OVER, ela passa a trabalhar como funcao de janela, calculando valores sobre um conjunto de linhas relacionado a cada linha do resultado, sem “sumir” com as demais linhas como numa agregacao comum. Na pratica, a expressao avg(imagem) OVER (PARTITION BY grau) calcula a media de imagem dentro de cada grupo de grau, mas devolve essa media em cada linha do proprio grupo. Ou seja, voce continua vendo todas as linhas de historico_bijecao, e ao lado vem a media daquele grau. Isso e bem diferente da funcao agregada ordinaria, que normalmente resumiria o grupo em uma unica linha por agrupamento. Por isso, o gabarito e C. No sistema de funcoes do SQLite, avg e uma funcao agregada que, quando usada com OVER, atua como window function. A classificacao correta nao e pela natureza “original” da funcao, mas pelo modo de uso na consulta. Em prova, essa sutileza costuma ser a pegadinha favorita da banca. Em resumo: sem OVER, avg costuma ser agregada ordinaria; com OVER, ela vira funcao de janela. E como o enunciado mostrou exatamente essa estrutura, a resposta correta e window.