これは複雑に見えますが、しかし私と一緒に耐える。 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%明確ではないので、調整が必要です。
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
次のレベルアップ、私はちょうどnet_return列に追加するsupply_fee列で計算total_costs列を再利用しています[SQ1]としてこれを参照します。これは、毎行に必要な基本的なデータは、それが値を集計を開始する時間です。このレベルでは[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
次のレベルアップ、Iは、合計([SQL4])
を算出する算出列を使用してい 今最終的に最上位レベルで、ちょうど算出列ずに出力するように、所望の列を必要とするが([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
)
とUNION句
あなたのポストを再フォーマットしようとしましたが、 ''返品のように '' '2010-01-10 AND' '2011-01-01''は正しく見えず、あなたはただ一つしか閉じずに二つのかっこを開きます... –
投稿を再投稿しました投稿者はその1つを見ました – smilezjim
あなたの公式は明確にする必要があります、実際にはあまり意味がありません –