這看起來很複雜,但忍受着我。它需要對others/rate
的含義進行一些說明,但是其原理是正確的。如果您可以使用財務主鍵,那麼可以使用更優雅的(GROUP BY ... ROLLUP)解決方案,但是我沒有足夠的經驗來提供可靠的建議。我將如何解決這個問題。
囉嗦選項
(
SELECT
financesTallied.date,
financesTallied.rate,
financesTallied.supply_fee,
financesTallied.demand_fee,
financesTallied.charged_fee,
financesTallied.total_costs,
financesTallied.net_return
FROM (
SELECT
financeWithNetReturn.*,
@supplyFee := @supplyFee + financeWithNetReturn.supply_fee,
@demandFee := @demandFee + financeWithNetReturn.demand_fee,
@charedFee := @charedFee + financeWithNetReturn.charged_fee
FROM
(// Calculate net return based off total costs
SELECT
financeData.*,
financeData.supply_fee - financeData.total_costs AS net_return
FROM
(// Select the data
SELECT
date,
rate,
supply_fee,
demand_fee,
charged_fee,
(supply_fee+demand_fee+charged_fee)/rate AS total_costs // need clarification on others/rate
FROM financies
WHERE date BETWEEN '2010-01-10' AND '2011-01-01'
ORDER BY date ASC
) AS financeData
) AS financeWithNetReturn,
(
SELECT
@supplyFee := 0
@demandFee := 0
@charedFee := 0
) AS variableInit
) AS financesTallied
) UNION (
SELECT
'*Total*',
NULL,
@supplyFee,
@demandFee,
@chargedFee,
NULL,
NULL
)
從最內層查詢到最外面的工作。該查詢選擇基本費用並計算該行的total_costs。這total_costs公式將需要調整,因爲我不是100%清楚你在那裏尋找什麼。將把這個作爲[SQ1]
SELECT
date,
rate,
supply_fee,
demand_fee,
charged_fee,
(supply_fee+demand_fee+charged_fee)/rate AS total_costs // need clarification on others/rate
FROM financies
WHERE date BETWEEN '2010-01-10' AND '2011-01-01'
ORDER BY date ASC
下一級別我只是重用計算total_costs柱與supply_fee列在net_return列添加。到此結束,你每行所需要的基礎數據,將其稱爲[SQL2]
SELECT
financeData.*,
financeData.supply_fee - financeData.total_costs AS net_return
FROM
([SQ1]) AS financeData
在這個層面上它的時候開始清點了值,因此需要初始化爲0值所需的變量([SQL3])
SELECT
@supplyFee := 0
@demandFee := 0
@charedFee := 0
下一級別,我使用的計算出的行來計算總計([SQL4])
SELECT
financeWithNetReturn.*,
@supplyFee := @supplyFee + financeWithNetReturn.supply_fee,
@demandFee := @demandFee + financeWithNetReturn.demand_fee,
@charedFee := @charedFee + financeWithNetReturn.charged_fee
FROM
([SQL2]) AS financeWithNetReturn,
([SQL3]) AS variableInit
現在終於在頂層,只需要輸出,而不計算列所需的列([SQL5])
SELECT
financesTallied.date,
financesTallied.rate,
financesTallied.supply_fee,
financesTallied.demand_fee,
financesTallied.charged_fee,
financesTallied.total_costs,
financesTallied.net_return
FROM ([SQL4]) AS financesTallied
然後輸出它聯合在一起具有總計行
([SQL5]) UNION (
SELECT
'*Total*',
NULL,
@supplyFee,
@demandFee,
@chargedFee,
NULL,
NULL
)
試圖重新格式化您的帖子,但'作爲淨收益'和''2010-01-10 AND''2011-01-01''看起來不正確,而你打開兩個括號,而只關閉一個...... – 2012-02-22 12:40:46
Redited the post did see the one – smilezjim 2012-02-22 12:43:54
你的配方需要澄清,它們並沒有真正意義上的逐字 – 2012-02-22 13:07:52