>  기사  >  데이터 베이스  >  MySQL에서 LAG() 함수와 LEAD() 함수를 사용하는 방법

MySQL에서 LAG() 함수와 LEAD() 함수를 사용하는 방법

王林
王林앞으로
2023-05-30 21:19:123681검색

1. 윈도우 함수의 기본 사용법

윈도우 함수는 MySQL8

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

2부터 지원되었습니다. LAG() 및 LEAD() 함수 소개

  • lag 및 리드는 각각 앞으로 및 뒤로를 의미합니다

  • 여기 세 가지 매개변수입니다. expression: 열 이름; offset: 오프셋; default_value: 기록 창 이상의 기본값(기본값은 null, 0으로 설정 가능)

3. 데이터 준비(마지막에 테이블 sql 생성) )

MySQL에서 LAG() 함수와 LEAD() 함수를 사용하는 방법

1. LAG() 함수: 전날보다 기온이 높은 날짜의 ID를 계산합니다.

먼저 날짜별로 정렬한 다음 지연을 사용하여 오늘의 기온이 높은 날짜를 찾습니다. () 기능, 온도를 하루 뒤로 미룹니다.

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;

가 아닌 데이터를 선택합니다. 결과는 다음과 같습니다.

MySQL에서 LAG() 함수와 LEAD() 함수를 사용하는 방법

2 LEAD() 함수: 온도 통계. 전날보다 더 높은 날짜 ID

먼저 날짜를 정렬한 다음, 리드() 함수를 사용하여 하루의 온도를 뒤로 밀고 그 날의 온도가 다음 날보다 더 높은 ID를 찾습니다.

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

쿼리 결과:

MySQL에서 LAG() 함수와 LEAD() 함수를 사용하는 방법

그런 다음 온도가 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제