FirebirdSQL logo

FIRST_VALUE()

Disponible en

DSQL

Syntaxe
FIRST_VALUE(<expr>) OVER {<window_specification> | window_name}
Table 1. paramètres de fonction FIRST_VALUE
Paramètre Description

expr

Expression : peut contenir une colonne de table, une constante, une variable, une expression, une fonction non agrégée ou une UDR. Les fonctions agrégées ne sont pas autorisées comme expression.

type de résultat de retour

le même que l’argument de la fonction expr.

Renvoie la première valeur d’un ensemble ordonné de valeurs de cadre de Window.

LAG()

Disponible en

DSQL

Syntaxe
LAG(<expr> [, <offset> [, <default>]])
  OVER {<window_specification> | window_name}
Table 1. paramètres de fonction LAG
Paramètre Description

expr

Expression : peut contenir une colonne de table, une constante, une variable, une expression, une fonction non agrégée ou une UDR. Les fonctions agrégées ne sont pas autorisées comme expression.

offset

Le nombre de lignes avant la ligne courante à partir desquelles la valeur doit être récupérée. Si aucune valeur n’est spécifiée, la valeur par défaut est 1. offset peut être une colonne, une requête imbriquée ou une autre expression qui calcule une valeur entière positive, ou un autre type qui peut être implicitement converti en `BIGINT'. offset ne peut pas être une valeur négative ou une fonction analytique.

default

Valeur par défaut qui est retournée si le décalage (offset) pointe en dehors de la section. La valeur par défaut est NULL.

type de résultat de retour

est le même que l’argument de la fonction expr.

La fonction LAG permet d’accéder à une chaîne avec un décalage physique spécifié (offset) avant le début de la chaîne courante.

Si le décalage (offset) pointe en dehors de la section, la valeur default sera renvoyée, qui a pour valeur par défaut NULL.

Exemples:
Example 1. utiliser fonctions LAG

Supposons que vous ayez une table "taux" qui stocke le taux de change pour chaque jour. Vous devez retracer les mouvements du taux au cours des cinq derniers jours.

SELECT
  bydate,
  cost,
  cost - LAG(cost) OVER(ORDER BY bydate) AS change,
  100 * (cost - LAG(cost) OVER(ORDER BY bydate)) /
    LAG(cost) OVER(ORDER BY bydate) AS percent_change
FROM rate
WHERE bydate BETWEEN DATEADD(-4 DAY TO current_date)
  AND current_date
ORDER BY bydate
Résultat
bydate        cost    change   percent_change
----------   -----   -------   --------------
27.10.2014   31.00    <null>           <null>
28.10.2014   31.53      0.53           1.7096
29.10.2014   31.40     -0.13          -0.4123
30.10.2014   31.67      0.27           0.8598
31.10.2014   32.00      0.33           1.0419