>데이터 베이스 >MySQL 튜토리얼 >그룹화된 MySQL 쿼리에서 이전 행의 값을 빼는 방법은 무엇입니까?

그룹화된 MySQL 쿼리에서 이전 행의 값을 빼는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-10 12:37:42849검색

How to Subtract the Previous Row's Value in a Grouped MySQL Query?

MySQL: 그룹 쿼리에서 이전 행의 값 빼기

이전 행에서 값을 빼는 것은 데이터 분석에서 일반적인 작업이지만 그룹화된 데이터로 작업할 때는 어려울 수 있습니다. MySQL은 이러한 상황을 해결하기 위한 일반적인 방법을 제공합니다.

각 SN의 연속 행 간의 에너지 소비 차이를 계산하기 위해 MySQL의 시스템 변수(@lastSN 및 @lastValue)와 데이터에 대해 단일 전달을 수행하는 쿼리를 사용합니다.

<code class="language-sql">SELECT
  EL.SN,
  EL.Date,
  EL.Value,
  IF(@lastSN = EL.SN, EL.Value - @lastValue, 0.00) AS Consumption,
  @lastSN := EL.SN,
  @lastValue := EL.Value
FROM
  EnergyLog EL,
  (SELECT @lastSN := 0, @lastValue := 0) SQLVars
ORDER BY
  EL.SN, EL.Date;</code>

쿼리는 다음과 같이 작동합니다.

  1. 이전 SN 및 값을 추적하려면 MySQL 변수 @lastSN 및 @lastValue를 선언하세요.
  2. EnergyLog 테이블의 각 행에 대해 현재 SN을 @lastSN과 비교합니다.
  3. SN이 일치하면 IF()를 사용하여 에너지 차이를 계산합니다. 그렇지 않으면 소비를 0으로 설정합니다.
  4. 비교 후 @lastSN 및 @lastValue를 현재 행의 값으로 업데이트합니다.
  5. 올바른 에너지 소비량 계산을 위해 결과를 SN 및 날짜별로 정렬합니다.

MySQL 변수를 사용하여 그룹화된 쿼리의 이전 값을 기반으로 에너지 소비를 계산하는 간단하고 효율적인 솔루션을 구현했습니다.

위 내용은 그룹화된 MySQL 쿼리에서 이전 행의 값을 빼는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.