SQLite LEAD

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 expressionat offsetseja NULL. Se você não especificar default, a LEAD()função retornará NULL.

PARTITION BYcláusula

A PARTITION BYclá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 BYcláusula, a função tratará todo o conjunto de resultados como uma única partição.

ORDER BYcláusula

A ORDER BYclá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 CustomerInvoicescom base na invoicestabela 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 CustomerInvoicesvisualizaçã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:

Tabela de amostra da função SQLite LEAD

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:

Função SQLite LEAD com exemplo ORDER BY

Neste exemplo:

  • Primeiro, não usamos a  PARTITION BYcláusula, então a LEAD()função tratou todo o conjunto de resultados derivado da FROMclá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:

Função SQLite LEAD com exemplo PARTITION BY

Neste exemplo:

  • Primeiro, a PARTITION BYcláusula particionou as linhas no conjunto de resultados por ID do cliente.
  • Em segundo lugar, a ORDER BYcláusula especificada na OVERcláusula classificou as linhas em cada partição por ano antes da LEAD()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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *