>  기사  >  데이터 베이스  >  MySQL SELECT 쿼리에서 행 간의 차이를 어떻게 계산할 수 있나요?

MySQL SELECT 쿼리에서 행 간의 차이를 어떻게 계산할 수 있나요?

DDD
DDD원래의
2024-11-07 01:42:02281검색

How can I calculate the difference between rows in a MySQL SELECT query?

MySQL SELECT 쿼리에서 행 간의 차이 계산

SELECT 쿼리에서 행 간의 차이를 계산하려면 다음 접근 방식을 고려하세요.

MAX() 하위 쿼리와 함께 LEFT JOIN 사용

LEFT JOIN을 사용하여 조건에 따라 행을 이전 행과 연결할 수 있습니다. 귀하의 경우, 각 날짜의 이전 행을 찾고 싶습니다:

SELECT
    mt1.ID,
    mt1.Kilometers,
    mt1.date,
    mt1.Kilometers - IFNULL(mt2.Kilometers, 0) AS number_km_since_last_date   
FROM
    myTable mt1
    LEFT JOIN myTable mt2
        ON mt2.Date = (
            SELECT MAX(Date)
            FROM myTable mt3
            WHERE mt3.Date < mt1.Date
        )
ORDER BY mt1.date

Lag() 함수 에뮬레이션 사용

MySQL에는 lag() 함수를 사용하면 사용자 정의 변수를 사용하여 이를 에뮬레이트할 수 있습니다.

SET @kilo=0;

SELECT
    mt1.ID,
    mt1.Kilometers - @kilo AS number_km_since_last_date,
    @kilo := mt1.Kilometers Kilometers,
    mt1.date
FROM myTable mt1
ORDER BY mt1.date

Results

두 방법 모두 원하는 출력을 생성합니다.

ID | Kilometers | date       | car_id | car_driver | number_km_since_last_date   
 1 | 100        | 2012-05-04 | 1 | 1 | 0  
 2 | 200        | 2012-05-08 | 1 | 1 | 100  
 4 | 600        | 2012-05-16 | 1 | 1 | 400  
 3 | 1000       | 2012-05-25 | 1 | 1 | 400

위 내용은 MySQL SELECT 쿼리에서 행 간의 차이를 어떻게 계산할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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