strawquery EN
Todas as lições

Lição 29 de 30

Funções de janela

Hoje no estúdio

A premiação do estúdio está chegando, e cada categoria precisa de um ranking, de um total acumulado ou de um "comparado com a vez anterior". As agregações juntam as linhas, mas desta vez você precisa mantê-las.

A ideia

Uma função de janela calcula sobre um conjunto de linhas, mas mantém todas as linhas. Você a escreve com OVER (...). RANK() OVER (ORDER BY salary DESC) dá a cada linha a sua posição, com empates dividindo a mesma posição.

PARTITION BY recomeça o cálculo para cada grupo. SUM(x) OVER (ORDER BY n) é um total acumulado, e LAG(x) OVER (ORDER BY n) é o valor da linha anterior, ou NULL na primeira.

Exemplo

SELECT name, floor,
  ROW_NUMBER() OVER (ORDER BY floor, name) AS position
FROM departments

Sua vez

0 de 4 perguntas

Pergunta 1 de 4

Classifique todo mundo por salário, sendo 1 o maior. Mostre name, salary e a posição, ordenados pela posição e depois por name.

Nesta pergunta, a ordem das linhas conta.

Projeto de fã não oficial. Os títulos pertencem aos seus criadores e detentores de direitos.