Maison  >  Article  >  base de données  >  Comment utiliser les fonctions LAG() et LEAD() dans MySQL

Comment utiliser les fonctions LAG() et LEAD() dans MySQL

王林
王林avant
2023-05-30 21:19:123652parcourir

1. Utilisation de base des fonctions de fenêtre

Les fonctions de fenêtre ne sont prises en charge que depuis MySQL8

<窗口函数> OVER ([PARTITION BY <用于分组的列>] ORDER BY <用于排序的列>)

2 Introduction aux fonctions LAG() et LEAD()

  • lag et lead signifient respectivement en avant et en arrière

  • Là. sont trois paramètres. expression : nom de la colonne ; offset : offset ; default_value : la valeur par défaut au-delà de la fenêtre d'enregistrement (la valeur par défaut est nulle, peut être définie sur 0)

3. Préparation des données (créer une table SQL à la fin )

Comment utiliser les fonctions LAG() et LEAD() dans MySQL

1. Fonction LAG() : Comptez les identifiants des dates avec des températures plus élevées que la veille

Nous trions d'abord par date, puis trouvons les identifiants avec des températures plus élevées aujourd'hui que la veille en utilisant le décalage ; (), Repoussez la température d'un jour.

select id, date, temperature, LAG(temperature, 1, 0) OVER (order by date) as temp FROM weather

Résultats de la requête :

Comment utiliser les fonctions LAG() et LEAD() dans MySQL

Sélectionnez ensuite les données où la température est supérieure à la température et la température n'est pas égale à 0

select id from (select id, date, temperature, LAG(temperature, 1, 0) OVER (order by date) as temp FROM weather) tmp where temperature>temp and temp != 0;

Les résultats sont les suivants :

Comment utiliser les fonctions LAG() et LEAD() dans MySQL

2. comparer la température avec l'identifiant de date plus élevé du lendemain

Tout d'abord, nous trions les dates, puis utilisons la fonction lead() pour repousser la température d'un jour et trouver l'identifiant qui a une température plus élevée ce jour-là que le lendemain.

select id, date, temperature, LEAD(temperature, 1, 0) OVER (order by date) as temp FROM weather

Résultats de la requête :

Comment utiliser les fonctions LAG() et LEAD() dans MySQL

Sélectionnez ensuite les données dont la température est supérieure à la température et la température n'est pas égale à 0

select id from (select id, date, temperature, LEAD(temperature, 1, 0) OVER (order by date) as temp FROM weather) tmp where temperature>temp and temp != 0;

Résultats de la requête :

Comment utiliser les fonctions LAG() et LEAD() dans MySQL

4. Créez des données de table sql

DROP TABLE IF EXISTS `weather`;
CREATE TABLE `weather`  (
  `id` int(11) NOT NULL,
  `date` date NULL DEFAULT NULL,
  `temperature` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of weather
-- ----------------------------
INSERT INTO `weather` VALUES (1, &#39;2022-08-01&#39;, 20);
INSERT INTO `weather` VALUES (2, &#39;2022-08-02&#39;, 25);
INSERT INTO `weather` VALUES (3, &#39;2022-08-03&#39;, 22);
INSERT INTO `weather` VALUES (4, &#39;2022-08-04&#39;, 22);
INSERT INTO `weather` VALUES (5, &#39;2022-08-05&#39;, 26);
INSERT INTO `weather` VALUES (6, &#39;2022-08-06&#39;, 28);
INSERT INTO `weather` VALUES (7, &#39;2022-08-07&#39;, 20);

SET FOREIGN_KEY_CHECKS = 1;

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer