我們對行爲進行了審計跟蹤,並且我被要求報告這些行動所花費的平均時間。如何排除在mySQL中聚合的行對數?
不幸的是,審計線索包含「取消」條目,其本質上排除了之前的操作。
所以,一些數據。
AuditTrail
ID OrderID ActionQty ActionDate
1 1 1 2002-02-02
2 2 1 2002-02-02
3 1 -1 2003-03-03
4 1 1 2004-04-04
和
Orders
OrderID OrderDate
1 2001-01-01
2 2002-02-02
的基準日期的比較的區別ActionDate。
這是所需的平均值。
在上面的例子中,AuditTrail條目1和3需要被排除,因爲條目3是'取消',因此需要排除先前的非取消條目(條目1)。 這些ID是連續的,但不一定是連續的訂單,因爲有很多訂單和許多審計線索條目。
更復雜的是,我們可以看到'取消'的運行,它需要進一步向下滾動。
例如
AuditTrail
ID OrderID ActionQty ActionDate
1030 99 1 2002-02-02
1031 99 1 2002-02-02
1032 99 -1 2003-03-03
1033 99 -1 2004-04-04
在這個例子中,在2和2進行。
所以。
平均值除以總數。我們可以很容易地使用SUM(ActionQty)
(GROUP'd BY AuditTrail.OrderID)來獲得訂單的正確數量。
獲取AuditEntry的天數也很容易(TIMESTAMPDIFF(DAY, Orders.OrderDate, AuditTrail.ActionDate)
)。
但排除正確的......我無法解決它。
任何線索?
所以在這最後一個例子,這將是對'天的訂單審計entry'數的結果99?它是否爲'0',因爲所有審計線都被取消了?我想,另一種要問的方式是:「根據您的示例數據,您期望的結果是什麼?」 – JNevill
是的。我沒有錯過預期的/期望的結果。 OrderID 1將是3y3m3d(無論以天爲單位)。 OrderID 2將爲0 OrderID 99將爲0 –