Neste tutorial, vamos nos concentrar em usar uma das funções MySQL: LAG (). É uma função de janela que permite acessar e buscar o valor das linhas anteriores da linha atual dentro do mesmo conjunto de resultados.
Sintaxe básica
A sintaxe geral para usar a função mySql lag () é:
Lag (expressão, OffsetValue, DefaultVar) sobre (Vamos tomar um momento para explicar alguns dos parâmetros na sintaxe da função lag ().
Eles são os seguintes:
Expressão: Este é o valor retornado pela função da linha que lidera a linha atual pelo valor de deslocamento especificado.
OffsetValue: Este valor representa o número de linhas que precedem a linha atual para obter o valor. Este valor deve ser um 0 ou um valor superior a 0.
OBSERVAÇÃO: O valor de 0 representa a linha atual.
DefaultVar: Este valor é retornado como o valor padrão pela função se não houver linha anterior. Se o valor padrão estiver indefinido no parâmetro de função e não existir uma linha anterior, a função retorna um valor nulo.
Partição por: A cláusula de partição por. A função de atraso é então aplicada às partições divididas.
ORDENAR POR: Como de costume, este valor especifica a ordem das linhas nas partições disponíveis.
Exemplo de uso de casos
Vejamos o exemplo de exemplo, use casos da função lag () para entender como funciona. Comece criando um amostra de banco de dados chamado sample_db;
Soltar o banco de dados se existir sample_database;Agora que temos um banco de dados de amostra para trabalhar, podemos prosseguir e ilustrar como trabalhar com a função de lag mysql.
Exemplo 1: Função de atraso sem valor padrão
Considere o exemplo abaixo que aplica a função de atraso no Entroll_date com um valor de deslocamento de 1.
Depois de executar a consulta acima, obtemos uma nova coluna anterior_date que mantém o valor anterior da linha, conforme especificado com um valor de deslocamento de 1. Como não há valor anterior na primeira linha, o valor é nulo.
Nota: Você pode especificar o valor padrão se uma linha não tiver um valor anterior.
A saída é como mostrado abaixo:
Exemplo 2: Função de atraso com valor padrão
Você também pode especificar um valor padrão para uma linha onde o valor anterior não existe. Em nosso exemplo, definiremos o valor padrão na data atual.
Nota: Neste exemplo, também definiremos o valor de deslocamento como 2 em vez de 1.
Considere a consulta abaixo:
Selecione *, LAG (Enroll_date, 2, Curdate ()) sobre (Ordem por id ASC) como anterior_date de sample_database.Usuários;Depois de executar a consulta acima, obteremos valores com um valor de deslocamento de dois e a data atual como padrão para valores nulos.
A saída é como mostrado abaixo:
Exemplo 3: Função de atraso com partição por
Podemos usar a função Lag () com a cláusula de partição por. Esta cláusula primeiro agrupa os dados em vários subconjuntos lógicos e depois aplica a função de atraso às partições.
Antes de prosseguir, vamos ver os dados na tabela do usuário. Considere a seguinte consulta:
Insira nos usuários (id, nome, pontuação, inscrição)Agora que temos uma tabela com 10 valores, podemos particionar os dados pela pontuação e depois aplicar a função de atraso.
A operação acima é ilustrada na consulta abaixo:
Selecione *, Lag (Enroll_date, 1, Curdate ()) sobre (Partição por ordem de pontuação por id ASC) como anterior_date de sample_database.Usuários;Na consulta acima, começamos dividindo os dados com base na pontuação e depois aplicando a função de atraso com um valor de deslocamento de 1. Também definimos o valor padrão como a data atual. O resultado da saída é como mostrado abaixo:
Nota: Você também pode observar que a primeira linha de todas as partições contém a data atual, o que significa que não há valor anterior na linha set.
Conclusão
Este tutorial discutiu como a função Lag () funciona para obter valores das linhas anteriores na linha atual.
Para recapitular:
Obrigado pela leitura.