Maison > base de données > tutoriel mysql > le corps du texte

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

王林
Libérer: 2023-05-30 21:19:12
avant
3678 Les gens l'ont consulté

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 <用于排序的列>)
Copier après la connexion

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
Copier après la connexion

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;
Copier après la connexion

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
Copier après la connexion

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;
Copier après la connexion

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;
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal