집 >데이터 베이스 >MySQL 튜토리얼 >SN별로 그룹화된 MySQL에서 이전 행 값을 빼서 소비를 계산하는 방법은 무엇입니까?
MySQL에서 소비 계산: SN별로 그룹화된 이전 행 값 빼기
이 가이드에서는 MySQL 테이블의 각 SN
그룹 내 연속 값을 비교하여 소비량을 계산하는 방법을 보여줍니다. 데이터에는 시간 경과에 따른 측정값을 나타내는 SN
(일련 번호) 및 Value
열이 포함됩니다. 목표는 현재 값에서 이전 값을 빼서 각 SN
의 소비량을 계산하는 것입니다.
이를 달성하기 위해 사용자 정의 변수를 활용하는 MySQL 쿼리는 다음과 같습니다.
<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 := NULL, @lastValue := NULL) AS SQLVars ORDER BY EL.SN, EL.Date;</code>
쿼리 설명:
변수 초기화: 하위 쿼리 (SELECT @lastSN := NULL, @lastValue := NULL) AS SQLVars
는 사용자 정의 변수 @lastSN
(이전 SN
추적) 및 @lastValue
(이전 Value
추적)을 NULL
. 0 대신 NULL
을 사용하면 각 SN
그룹의 첫 번째 행이 올바르게 처리됩니다.
행별 처리: 기본 쿼리는 EnergyLog
및 EL
순서로 SN
테이블(별칭 Date
)을 통해 반복됩니다.
소비 계산: IF
문은 현재 SN
(EL.SN
)가 이전에 처리된 SN
(@lastSN
)과 일치하는지 확인합니다.
EL.Value - @lastValue
으로 계산합니다.SN
그룹을 의미) 소비량을 0.00으로 설정합니다.변수 업데이트: @lastSN := EL.SN
및 @lastValue := EL.Value
는 다음 행의 비교를 위해 변수를 업데이트합니다.
출력: 쿼리는 각 행에 대해 SN
, Date
, Value
및 계산된 Consumption
을 반환합니다.
이 접근 방식은 단일 쿼리를 사용하여 각 SN
그룹 내의 소비를 효율적으로 계산하므로 더 복잡한 하위 쿼리나 조인이 필요하지 않습니다. 사용자 정의 변수를 사용하면 계산이 간결하고 효율적으로 이루어집니다.
위 내용은 SN별로 그룹화된 MySQL에서 이전 행 값을 빼서 소비를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!