2011-10-11 18 views
3

我這有律」 mysql表:MySQL的聚集功能,從行總和的差異來排

+----+-------+ 
| id | value | 
+----+-------+ 
| 1 | 1240 | 
| 2 | 1022 | 
| 3 | 802 | 
| .. | .. | 
+------+-----+ 

我在尋找一個SQL查詢總結行之間的區別:

第1行和第2行的差異+第2行和第3 +行的差異...

是否可能與sql?

回答

3

當然!您的查詢會是這個樣子:

SELECT a.id, 
     b.VALUE - a.VALUE difference 
FROM mytable a 
     JOIN mytable b 
     ON b.id = a.id + 1 

的想法是加入表本身由一個行偏移 - 那麼你可以做數學與最初在相鄰的行中的值。

+1

可能值得一提的是內部連接,所以不會對最後一個記錄造成混淆... –

+0

+1簡單而優雅。確保你看看@MattFellows的評論 –

+4

這裏隱含着一個假設:id是連續的。如果您的ID存在任何空白,例如由於刪除,這可能會讓您感到沮喪。 – RedFilter