Resumo : neste tutorial, você aprenderá como usar a FIRST_VALUE()
função SQLite para obter o valor da primeira linha em um quadro de janela especificado.
Introdução à FIRST_VALUE()
função
É FIRST_VALUE()
uma função de janela que permite obter o valor da primeira linha em um quadro de janela especificado.
O seguinte mostra a sintaxe da FIRST_VALUE()
função:
FIRST_VALUE(expression) OVER (
PARTITION BY expression1, expression2,...
ORDER BY expression1 [ASC | DESC], expression2,..
frame_clause
)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
expression
é uma expressão avaliada em relação à primeira linha no quadro da janela. O expression
deve retornar um único valor. Não é possível usar uma subconsulta ou outra função de janela no arquivo expression
.
PARTITION BY
A PARTITION BY
cláusula distribui linhas em partições por um ou mais critérios aos quais a FIRST_VALUE()
função se aplica. A PARTITION BY
cláusula é opcional. Se você omitir, a FIRST_VALUE()
função tratará todo o conjunto de resultados como uma única partição.
ORDER BY
A ORDER BY
cláusula especifica a ordem das linhas em cada partição à qual a FIRST_VALUE()
função se aplica.
frame_clause
Define frame_clause
o quadro da partição atual. Para obter informações detalhadas sobre a cláusula frame, confira o tutorial da cláusula window frame .
FIRST_VALUE()
Exemplos de funções SQLite
Usaremos a tracks
tabela do banco de dados de exemplo para a demonstração:
1) Usando FIRST_VALUE()
função SQLite com ORDER BY
exemplo de cláusula
A instrução a seguir usa a FIRST_VALUE()
função para retornar o nome da faixa, o tamanho em bytes e a menor faixa do ID do álbum 1:
SELECT
Name,
printf('%,d',Bytes) Size,
FIRST_VALUE(Name) OVER (
ORDER BY Bytes
) AS SmallestTrack
FROM
tracks
WHERE
AlbumId = 1;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A imagem a seguir mostra a saída:
Neste exemplo, a ORDER BY
cláusula classificou as faixas por valores na Bytes
coluna e a FIRST_VALUE()
função escolheu a primeira faixa do conjunto de resultados.
Observe que usamos a printf()
função para formatar os valores numéricos na coluna Bytes com vírgulas (,).
2) Usando SQLite FIRST_VALUE()
com PARTITION BY
exemplo de cláusula
O exemplo a seguir retorna todas as faixas de todos os álbuns. Também mostra a maior faixa de cada álbum:
SELECT
AlbumId,
Name,
printf('%,d',Bytes) Size,
FIRST_VALUE(Name) OVER (
PARTITION BY AlbumId
ORDER BY Bytes DESC
) AS LargestTrack
FROM
tracks;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Aqui está a saída parcial:
Neste exemplo:
- Primeiro, a
PARTITION BY
cláusula dividia as faixas por ID do álbum. - Em seguida, a
ORDER BY
cláusula classificou as faixas por tamanho, do maior ao menor. - Por fim, foi
FIRST_VALUE()
escolhida a faixa de maior tamanho de cada álbum.
Neste tutorial, você aprendeu como usar a FIRST_VALUE()
função SQLite para obter o valor da primeira linha em um quadro de janela especificado.