簡體   English   中英

Mysql中連續行之間的區別

[英]Difference between consecutive rows in Mysql

我想得到MySql中2個連續行之間的差異。 我正在努力解決,但沒有運氣。 這是圖像中的數據

http://i.stack.imgur.com/keIdU.png

我需要“ Data2”列的行與“ Diff”列的結果之間存在差異。

感謝您的關注,也非常感謝您的幫助。

-內存

如果表中有一個自動遞增的列“ id”,我們可以按id排序並標識下一行的值並將其減去

SELECT t1.*, t1.Data2-(SELECT t2.Data2 FROM  `table_name`  t2 WHERE t2.id > t1.id LIMIT 1 ) AS difference
FROM `table_name`  t1
ORDER BY t1.id

從下一行中減去

SELECT t1.*, t1.Data2-(SELECT t2.Data2 FROM  `table_name`  t2 WHERE t2.id < t1.id ORDER BY id DESC  LIMIT 1 ) AS difference
FROM `table_name`  t1
ORDER BY t1.id

由於表中沒有唯一的列,因此可以通過包含綁定變量[ @rn1 @rn@rn1 @rn ]來實現此目的,該變量將唯一的數字順序地添加到表中的每一行。

嘗試這個:

SELECT tab1.application_id, tab1.fiscal_year, tab1.data1, coalesce(cast(tab1.data2 as signed) - 
                cast(tab2.data2 as signed), tab1.data2) as diff
  FROM 
      (SELECT b.application_id, @rn1:=@rn1+1 AS rank, b.fiscal_year, b.data1, b.data2
         FROM your_table b, (SELECT @rn1:=0) t1) as tab1,
      (SELECT a.application_id, @rn:=@rn+1 AS rank, a.fiscal_year, a.data1, a.data2
         FROM your_table a, (SELECT @rn:=0) t2) as tab2
 WHERE tab1.rank = tab2.rank + 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM