LEAD
Descrição
LEAD
é uma função de agregação de janela que divide as linhas em grupos, as ordena por um campo e retorna o valor de um campo na linha no deslocamento especificado após (abaixo) a linha atual no grupo.O
PARTITION BY
A cláusula determina quais campos usar para dividir um conjunto de linhas de entrada em grupos. O ORDER BY
A cláusula determina como as linhas na partição são ordenadas.O Workday separa as linhas de entrada em grupos de acordo com os campos de particionamento, ordena as linhas de acordo com os campos de ordenação e calcula a expressão de agregação (lead para essa função) em cada grupo.
Sintaxe
LEAD(input_field,offset,default_value)OVER(PARTITION BYpartitioning_field[,partitioning_field]ORDER BYordering_field[ASC | DESC] [,ordering_field[ASC | DESC]] )
Valor de retorno
Retorna um valor por linha do mesmo tipo de
input_field
.Parâmetros de entrada
- input_field
- É obrigatório. O campo no qual executar a função de agregação. Você pode especificar qualquer tipo de campo.
- offset
- Opcional. O número de linhas após a linha atual cujo valor deve ser retornado. Deve ser um número literal maior ou igual a zero (0) e menor ou igual a 100. Se você não especifica o deslocamento, o Workday usa o valor 1.
- default_value
- Opcional. O valor que essa função retorna quando a linha de deslocamento está fora da janela definida atualmente ou quando o valor na linha de deslocamento é NULL.default_valuedeve ser do mesmo tipo queinput_field. Se você não especifica um valor por padrão, o Workday usa o valor NULL.
- OVER()
- Obrigatório.OVERdeve ser usado em um período deLEADexpressão.
- PARTITION BYpartição_field
- É obrigatório. Use as teclasPARTITION BYPara especificar um ou mais campos a serem usados para particionar um grupo de linhas de entrada. Você pode especificar qualquer tipo de campo, exceto Moeda. Exemplo: você especifica o campo Mês como o campo de partição, para que o Workday agrupe em uma única partição todos os registros que têm o mesmo valor para Mês.
- ORDER BYorder_field
- É obrigatório. Use as teclasORDER BYpara especificar como ordenar as linhas de entrada na partição usando os valores no campo especificado dentro de cada partição. Você pode especificar qualquer tipo de campo, exceto Moeda.Você pode usar o botãoDESCouASCPalavras-chave para classificar em ordem decrescente (valores do mais alto para o menor, valores NULL são os últimos) ou crescente (valores do menor para o maior, valores NULL são os primeiros) para cada campo de ordenação. Se você não especifica uma ordem de classificação para um campo de ordenação, o Workday classifica as linhas automaticamente em ordem crescente.
Exemplos
Exemplo: você tem um conjunto de dados com essas linhas e campos.
row_ID | Employee_Name | Eff_Date | Salário |
|---|---|---|---|
1 | Goh | 1/1/18 | 49000 |
2 | Goh | 1/1/19 | 56000 |
3 | Goh | 1/1/17 | 44000 |
4 | Freeman | 1/1/18 | 65000 |
5 | Freeman | 1/1/17 | 57000 |
6 | Freeman | 1/1/19 | 69000 |
7 | Smith | 1/1/18 | 51000 |
8 | Smith | 1/1/19 | 56000 |
9 | Smith | 1/1/16 | 44000 |
Você pode ordenar as linhas de cada colaborador em ordem decrescente (
DESC
) pelo campo de data de vigência (Eff_Date
), de forma que o salário mais recente vem primeiro em cada partição.Use esta expressão no campo
Salary_Increase
para calcular a alteração no salário entre cada alteração na data de vigência:[Salary] - (LEAD([Salary], 1, [Salary]) OVER( PARTITION BY [Employee_Name] ORDER BY [Eff_Date] DESC) )
Você obtém estes resultados:
row_ID | Employee_Name | Eff_Date | Salário | Salary_Increase |
|---|---|---|---|---|
2 | Goh | 1/1/19 | 56000 | 7000 |
1 | Goh | 1/1/18 | 49000 | 5.000 |
3 | Goh | 1/1/17 | 44000 | 0 |
6 | Freeman | 1/1/19 | 69000 | 4.000 |
4 | Freeman | 1/1/18 | 65000 | 8000 |
5 | Freeman | 1/1/17 | 57000 | 0 |
8 | Smith | 1/1/19 | 56000 | 5.000 |
7 | Smith | 1/1/18 | 51000 | 7000 |
9 | Smith | 1/1/16 | 44000 | 0 |