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>
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_quote
Enregistrez 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>
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!