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.