簡體   English   中英

為什么我的 SUM 查詢每次運行時都會產生不同的結果?

[英]Why might my SUM query be producing different results each time I run it?

發布此問題可能毫無意義,因為我無法顯示導致問題的實際代碼,並且由於不知道問題的根源,因此無法使用假數據重新創建它,但想問一下是否有人看到過類似的東西.

我有一個查詢,它有一個 SUM windows function 每次運行時都會返回不同的值,盡管代碼或基礎數據沒有變化。 從字面上看,相同的語句相隔兩秒運行將返回一個看似隨機的選擇,從 4 到 7。

我無法打印實際代碼,但產生不同結果的行如下,其中列名已更改:-

SUM(UNITS) OVER (PARTITION BY ACCOUNT_KEY, TRANSACTION_DATE 
    ORDER BY ACCOUNT_KEY,TRANSACTION_DATE)  NUMBER_OF_UNITS      

如果有人可以就如何解決這個問題提供任何建議,或者如果您遇到類似問題,請告訴我。 我意識到,如果沒有完整的代碼,就很難確定,但是有人可能已經看到了類似的問題,並且可能會提供一些指導。

您的ORDER BY鍵與您的PARTITION BY鍵相同。 因此,沒有排序 - window 框架中的所有內容都具有相同的排序鍵值。

您正在對不穩定的排序進行累積和。 因此,這些行可以——並且是——以任意順序排列。

大概,您想要每個帳戶的累計UNITS總和,按日期排序:

SUM(UNITS) OVER (PARTITION BY ACCOUNT_KEY ORDER BY TRANSACTION_DATE) as NUMBER_OF_UNITS

假設TRANSACTION_DATE是唯一的,這將是穩定的。 請注意,默認情況下,一個帳戶的相同交易日期會一起出現,因為默認窗口子句是RANGE

SUM(UNITS) OVER (PARTITION BY ACCOUNT_KEY
                 ORDER BY TRANSACTION_DATE
                 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
                ) as NUMBER_OF_UNITS

暫無
暫無

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

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