MySQL SELECT クエリの行間の差異を計算するにはどうすればよいですか?

DDD
リリース: 2024-11-07 01:42:02
オリジナル
349 人が閲覧しました

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() 関数では、ユーザー定義変数を使用して 1 つをエミュレートできます:

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート