MySQL で LAG() 関数と LEAD() 関数を使用する方法

王林
リリース: 2023-05-30 21:19:12
転載
3679 人が閲覧しました

1. ウィンドウ関数の基本的な使用法

ウィンドウ関数は MySQL8 以降のみサポートされています

<窗口函数> OVER ([PARTITION BY <用于分组的列>] ORDER BY <用于排序的列>)
ログイン後にコピー

2. LAG() および LEAD() 関数の概要

  • lag と lead はそれぞれ前方と後方を意味します

  • パラメータは 3 つあります。 expression: 列名; offset: オフセット; default_value: 記録ウィンドウを超えるデフォルト値 (デフォルトは null、0 に設定可能)

3. データの準備(最後にテーブル SQL を作成)

MySQL で LAG() 関数と LEAD() 関数を使用する方法

##1. LAG() 関数: 前回と比較した温度変化の統計最高日 ID

の場合、最初に日付で並べ替えてから、今日の気温が前日より高い ID を見つけます。lag() 関数を使用して気温を 1 日戻します。

select id, date, temperature, LAG(temperature, 1, 0) OVER (order by date) as temp FROM weather
ログイン後にコピー

クエリ結果:

MySQL で LAG() 関数と LEAD() 関数を使用する方法##次に、温度が temp より大きく、温度が 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;
ログイン後にコピー

結果は次のようになります。

##2. LEAD() 関数: 翌日よりも気温が高い日付 ID を数えるMySQL で LAG() 関数と LEAD() 関数を使用する方法

まず、日付を並べ替えてから、 use lead () 関数は、温度を 1 日戻し、その日の温度が翌日よりも高い ID を見つけます。

select id, date, temperature, LEAD(temperature, 1, 0) OVER (order by date) as temp FROM weather
ログイン後にコピー

クエリ結果:

##次に、温度が temp より高く、温度が 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;
ログイン後にコピー
MySQL で LAG() 関数と LEAD() 関数を使用する方法クエリ結果:

4. テーブルデータの作成 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;
ログイン後にコピー

以上がMySQL で LAG() 関数と LEAD() 関数を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート