Maison > base de données > tutoriel mysql > Comment simuler une fonction LAG dans MySQL ?

Comment simuler une fonction LAG dans MySQL ?

Linda Hamilton
Libérer: 2025-01-18 01:17:07
original
919 Les gens l'ont consulté

How to Simulate a LAG Function in MySQL?

Simuler la fonction LAG dans MySQL

MySQL lui-même ne prend pas en charge la fonction LAG pour calculer la différence de valeur entre des lignes consécutives. Cependant, nous pouvons simuler la fonctionnalité de la fonction LAG de la manière suivante.

Fonction Simuler LAG

L'instruction SQL suivante simule la fonction LAG dans MySQL :

<code class="language-sql">SET @quot=-1;
select time,company,@quot lag_quote, @quot:=quote curr_quote
  from stocks order by company,time;</code>
Copier après la connexion

Ici, @quot est une variable définie par l'utilisateur utilisée pour stocker la citation de la ligne précédente. Pour la première ligne, @quot est initialisé à -1. curr_quoteEnregistrez le devis pour la ligne actuelle.

Résultats personnalisés

Bien que la simulation ci-dessus fournisse des valeurs d'hystérésis, elle ne présente pas les résultats dans le format spécifié dans la question. Pour obtenir ce format, la requête imbriquée suivante peut être utilisée :

<code class="language-sql">SET @quot=0,@latest=0,company='';
select B.* from (
select A.time,A.change,IF(@comp=A.company,1,0) as LATEST,@comp:=A.company as company from (
select time,company,quote-@quot as change, @quot:=quote curr_quote
from stocks order by company,time) A
order by company,time desc) B where B.LATEST=1;</code>
Copier après la connexion

Cette requête imbriquée calcule les différences de cotation et identifie la dernière ligne pour chaque entreprise, générant ainsi une sortie au format requis.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal