>  기사  >  데이터 베이스  >  MySQL SELECT 문에서 행 간의 차이를 계산하는 방법은 무엇입니까?

MySQL SELECT 문에서 행 간의 차이를 계산하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-07 09:32:03851검색

How to Calculate the Difference Between Rows in a MySQL SELECT Statement?

MySQL SELECT 문에서 행 간의 차이 계산

문제:

결정 방법 MySQL SELECT 문의 두 후속 행 사이의 값 차이는 무엇입니까? 제공된 테이블에는 킬로미터, 날짜, 차량 식별 정보와 같은 데이터가 포함되어 있습니다. 목표는 이전 날짜 이후의 킬로미터 수를 나타내는 추가 열이 포함된 뷰를 만드는 것입니다.

해결책:

이를 달성하려면 LEFT JOIN과 하위 쿼리가 사용됩니다. LEFT JOIN을 사용하면 myTable 테이블에서 데이터를 검색할 수 있으며, 하위 쿼리를 사용하면 날짜가 현재 행보다 이전인 가장 최근 행과 비교됩니다. 이 접근 방식은 원하는 킬로미터 차이를 효과적으로 생성합니다.

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

대체 솔루션:

또 다른 방법은 MySQL hackiness를 사용하여 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

결과:

두 방법 모두 정렬된 테이블에서 연속 행 간의 킬로미터 차이를 성공적으로 계산하여 원하는 추가 정보를 제공하는 뷰를 제공합니다.

위 내용은 MySQL SELECT 문에서 행 간의 차이를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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