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