如何計算 MySQL SELECT 查詢中行之間的差異?

DDD
發布: 2024-11-07 01:42:02
原創
347 人瀏覽過

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

計算MySQL SELECT 查詢中的行之間的差異

要計算SELECT 查詢中的行之間的差異,請考慮以下方法:

將LEFT JOIN 與MAX() 子查詢結合使用

您可以依照條件使用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
登入後複製

結果

兩種方法都會產生所需的輸出:

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板