Resumo : neste tutorial, você aprenderá como usar a LEAD()
função SQLite para obter o valor da linha seguinte da linha atual na partição.
Introdução à LEAD()
função SQLite
A função SQLite LEAD()
é uma função de janela que permite acessar os dados da linha seguinte em um determinado deslocamento físico da linha atual na partição.
Aqui está a sintaxe da LEAD()
função:
LEAD(expression [,offset[, default ]]) OVER (
PARTITION BY expression1, expression2,...
ORDER BY expression1 [ASC | DESC], expression2,...
)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
expression
É uma expressão avaliada em relação ao valor da linha com base no deslocamento especificado. Deve retornar um único valor.
offset
É o número de linhas encaminhadas da linha atual da qual o valor será obtido. O valor padrão de offset
é 1 se você não especificá-lo explicitamente.
default
É o valor padrão a ser retornado caso expression
at offset
seja NULL. Se você não especificar default
, a LEAD()
função retornará NULL.
PARTITION BY
cláusula
A PARTITION BY
cláusula distribui as linhas do conjunto de resultados nas partições às quais a LEAD()
função se aplica. Se você não especificar explicitamente a PARTITION BY
cláusula, a função tratará todo o conjunto de resultados como uma única partição.
ORDER BY
cláusula
A ORDER BY
cláusula especifica a ordem das linhas em cada partição à qual a LEAD()
função se aplica.
Freqüentemente usamos a LEAD()
função para calcular a diferença entre os valores da linha atual e da linha subsequente.
LEAD()
Exemplos de funções SQLite
Criamos uma visualização nomeada CustomerInvoices
com base na invoices
tabela do banco de dados de amostra para demonstração:
CREATE VIEW CustomerInvoices
AS
SELECT
CustomerId,
strftime('%Y',InvoiceDate) Year,
SUM( total ) Total
FROM
invoices
GROUP BY CustomerId, strftime('%Y',InvoiceDate);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A instrução a seguir consulta dados na CustomerInvoices
visualização:
SELECT
*
FROM
CustomerInvoices
ORDER BY
CustomerId,
Year,
Total;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A imagem a seguir mostra a saída parcial:
1) Usando LEAD()
a função SQLite no exemplo do conjunto de resultados
A consulta a seguir usa a LEAD()
função para retornar a diferença nos valores da fatura de um cliente específico nos anos subsequentes:
SELECT
CustomerId,
Year,
Total,
LEAD ( Total,1,0) OVER ( ORDER BY Year ) NextYearTotal
FROM
CustomerInvoices
WHERE
CustomerId = 1;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Aqui está a saída:
Neste exemplo:
- Primeiro, não usamos a
PARTITION BY
cláusula, então aLEAD()
função tratou todo o conjunto de resultados derivado daFROM
cláusula como uma única partição. - Segundo, como não há valor inicial disponível para a última linha, a função retornou o valor padrão zero.
2) Usando LEAD()
a função SQL sobre partição por exemplo
O exemplo a seguir usa a LEAD()
função para retornar a diferença nos valores das faturas de cada cliente nos anos subsequentes:
SELECT
CustomerId,
Year,
Total,
LEAD ( Total, 1, 0 ) OVER (
PARTITION BY CustomerId
ORDER BY Year
) NextYearTotal
FROM
CustomerInvoices;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A imagem a seguir mostra a saída parcial:
Neste exemplo:
- Primeiro, a
PARTITION BY
cláusula particionou as linhas no conjunto de resultados por ID do cliente. - Em segundo lugar, a
ORDER BY
cláusula especificada naOVER
cláusula classificou as linhas em cada partição por ano antes daLEAD()
aplicação da função. - Terceiro, a
LEAD()
função é aplicada separadamente a cada partição e o cálculo é reiniciado para cada partição.
Observe que a última linha de cada partição tem um valor zero (0) porque não tinha valor inicial.
Neste tutorial, você aprendeu como usar a LEAD()
função SQLite para obter dados da linha seguinte da linha atual na partição.