首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL 累計求和查詢:依 OrderIndex 排序計算每行及之前所有 Num 總和

     編輯:程式設計綜合問答

資料樣本


Id   Num  OrderIndex
A1   3    1
A2   2    2
A3   3    3
B1   1    4
B2   4    5

目標結果


Id   Num
A1   3
A2   5
A3   8
B1   9
B2   13

標準 SQL:視窗函數(推薦,現代資料庫支援)


SELECT Id,
       SUM(Num) OVER (ORDER BY OrderIndex ROWS UNBOUNDED PRECEDING) AS Num
FROM tbl
ORDER BY OrderIndex;

相容舊版:相關子查詢


SELECT B.Id,
       (SELECT SUM(A.Num) FROM tbl A WHERE A.OrderIndex <= B.OrderIndex) AS Num
FROM tbl B
ORDER BY B.OrderIndex;

MySQL 8.0+ / PostgreSQL / SQL Server 2012+ 均支援視窗函數,效能優於子查詢。

總結

依 OrderIndex 排序計算累計和,現代 SQL 使用 SUM() OVER (ORDER BY ...) 最簡潔高效;舊版資料庫用相關子查詢實現相同邏輯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved