집 >데이터 베이스 >MySQL 튜토리얼 >SN별로 MySQL의 연속 행 간의 에너지 소비 차이를 계산하는 방법은 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!