MySQL 中行的累積總和
為了確定每個id 的累積總和(按一天中的小時分組),使用了一種小時分組),使用了一種常見方法在MySQL 中。由於早期版本的 MySQL 中缺少分析函數,因此主要採用兩種方法:相關子查詢或 MySQL 使用者變數。
相關子查詢方法
此策略涉及一個子查詢,該子查詢根據匹配條件計算每行的累積總計。然而,對於大量資料集來說,它可能會佔用大量資源。
使用者變數方法
更有效的方法涉及 MySQL 使用者變數和帶有 ORDER BY 子句的包裝查詢以保證行處理順序。以下步驟概述了此方法:
此方法的範例:
SELECT IF(@prev_id = c.id AND @prev_day = c.day , @cumtotal := @cumtotal + c.amount , @cumtotal := c.amount) AS cumulative_total , @prev_id := c.id AS `id` , @prev_day := c.day AS `day` , c.hr , c.amount AS `amount' FROM ( SELECT @prev_id := NULL , @prev_day := NULL , @cumtotal := 0 ) i JOIN ( SELECT id, day, hr, amount FROM ( // Original query with multiple joins and unions ) a LEFT JOIN ( // Unions on multiple tables ) b ON a.id = b.id ORDER BY 1, 2, 3 ) c
此方法允許在 8.0 之前的 MySQL 版本中高效計算累積和,當視窗函數被引入時。
以上是MySQL如何有效率地計算累計和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!