>데이터 베이스 >MySQL 튜토리얼 >SN별로 MySQL의 연속 행 간의 에너지 소비 차이를 계산하는 방법은 무엇입니까?

SN별로 MySQL의 연속 행 간의 에너지 소비 차이를 계산하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-10 12:03:43298검색

How to Calculate Energy Consumption Differences Between Consecutive Rows in MySQL by SN?

MySQL: 일련번호(SN)를 기준으로 연속 행 간의 에너지 소비 차이 계산

이 문서에서는 일련 번호(SN)별로 그룹화된 MySQL 데이터베이스의 연속 행 간의 에너지 소비 차이를 계산하는 방법을 간략하게 설명합니다.

문제:

에너지 소비 데이터가 포함된 테이블에서 목표는 각 SN의 소비 차이를 계산하여 해당 특정 SN의 현재 값과 이전 값 사이의 변화를 나타내는 것입니다.

샘플 데이터:

다음 표(EnergyLog)는 초기 데이터 구조를 보여줍니다.

SN Date Value
2380 2012-10-30 00:15:51 21.01
2380 2012-10-31 00:31:03 22.04
2380 2012-11-01 00:16:02 22.65
2380 2012-11-02 00:15:32 23.11
20100 2012-10-30 00:15:38 35.21
20100 2012-10-31 00:15:48 37.07
20100 2012-11-01 00:15:49 38.17
20100 2012-11-02 00:15:19 38.97
20103 2012-10-30 10:27:34 57.98
20103 2012-10-31 12:24:42 60.83

원하는 출력:

쿼리는 Consumption 열이 추가된 테이블을 생성해야 합니다.

SN Date Value Consumption
2380 2012-10-30 00:15:51 21.01 0.00
2380 2012-10-31 00:31:03 22.04 1.03
2380 2012-11-01 00:16:02 22.65 0.61
2380 2012-11-02 00:15:32 23.11 0.46
20100 2012-10-30 00:15:38 35.21 0.00
20100 2012-10-31 00:15:48 37.07 1.86
20100 2012-11-01 00:15:49 38.17 1.10
20100 2012-11-02 00:15:19 38.97 0.80
20103 2012-10-30 10:27:34 57.98 0.00
20103 2012-10-31 12:24:42 60.83 2.85

SQL 솔루션:

다음 SQL 쿼리는 사용자 정의 변수를 활용하여 원하는 결과를 얻습니다.

<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) AS SQLVars
ORDER BY
    EL.SN,
    EL.Date;</code>

설명:

  • @lastSN@lastValue: 0으로 초기화되는 사용자 정의 변수입니다. @lastSN는 마지막으로 처리된 SN을 추적하고, @lastValue은 마지막으로 처리된 값을 저장합니다.
  • IF(@lastSN = EL.SN, EL.Value - @lastValue, 0.00): 이 조건문은 현재 SN이 이전 SN과 동일한지 확인합니다. true인 경우 소비 차이를 계산합니다. 그렇지 않으면 소비량을 0.00으로 설정합니다(각 SN의 첫 번째 항목에 대해).
  • @lastSN := EL.SN, @lastValue := EL.Value: 이러한 할당은 각 행을 처리한 후 사용자 정의 변수를 업데이트합니다.
  • ORDER BY EL.SN, EL.Date: 이 절은 정확한 차이 계산을 위해 행이 올바른 순서(SN별, 그 다음 날짜별)로 처리되도록 보장합니다.

이 접근 방식은 MySQL의 가변 처리 기능을 활용하여 각 SN의 에너지 소비 차이를 효율적으로 계산합니다. 결과의 정확성을 위해서는 ORDER BY를 사용하는 것이 중요합니다.

위 내용은 SN별로 MySQL의 연속 행 간의 에너지 소비 차이를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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