我正試圖在SQL(transact sql)中實現一個算法,並且鑑於我目前的能力而發現它很困難。我試圖將問題解決到問題。這個算法背後的基本思想是用戶正在計劃一個月的預算。他們對有多少錢以及何時來來往往有個好主意。這是本月中旬。問題是:根據目前的義務,在這個月的其餘時間,賬戶最糟糕的位置是什麼?下面如何在SQL中實現此算法?
例如在看的時候線讓我們說
Today = 15th
Util = 17th
B-day = 19th
Cable = 22nd
Wages = 25th
17日該帳戶會比今天少$ 150 在19日的帳戶將比今天多100美元。 在22日的帳戶將比今天少25美元。 25日的賬戶將比今天多975美元。
所以在這個例子中,查詢將返回 - $ 150。
注:我只關心返回的負值。如果它是負面的意味着你有義務,不應該花這筆錢。如果它是積極的,那並不重要。您不能將錢花在您的帳戶中。
| | |
| ^ ^ | ^ ^ |
| |Rent(-500) |Phone(-50) | |Util(-150) |Cable(-125) |
-----------------------------------------------------------------------------------
| ^ | ^ ^ |
| |Wages(+1000) | |B-day(+250) |Wages(+1000) |
| | |
Past Today Future
一個簡單的表格,我們可以利用這個問題:
create table MoneyFlow
(
fiscalEventID int not null,
value money,
transactionDate date
)
另一種方式來看待它。你如何在SQL中執行以下算法?
Algorithm
Input: Start date, End date
Output: Worst position the account is going to be in in the future.
WorstPosition = 0 //only want worst position if it is negative.
For each date D between start date and end date where a transaction takes place
Position_D = Sum deposits and withdrawls between start date and D
If Position_D < WorstPosition
WorstPosition = Position_D
return WorstPosition
還要說明一點,我使用的數據庫的Sybase
讓我知道你是否需要澄清的任何細節。謝謝!
榮譽。 – 2009-09-25 16:07:29
順便說一句,這個問題聽起來像它可能是作業。如果是這樣,請標記爲。 – 2009-09-25 16:16:54
我同意,這會做出好的作業問題。我用「預算」的例子來隱藏大部分討厭的商業細節。例如,在我正在處理的問題中,月末沒有傳入。未來空間在上次提款交易日期結束。 此外,我將不得不添加像'預算分類' – Jon 2009-09-25 17:47:54