2012-10-11 35 views
1

我有一個MySQL列表,其中有4列,如下所示。MySQL查詢返回日期列表的總利潤/損失

TransactionID | Item | Amount | Date 
------------------------------------ 
       |  |  | 
       |  |  | 

我有很多條目,什麼我希望能夠做的是建立在每個時間點返回的總利潤/虧損的列表的查詢?

想象我有以下交易:

Bought item for 5 
Sold item for 15 
Bought item for 5 
Sold item for 15 

所以我希望它返回這樣的事情。

Profit/Loss | Date 
------------------ 
-5   | 20-10-12 
10   | 21-10-12 
5   | 22-10-12 
20   | 23-10-12 

這是可能的MySQL查詢嗎?

+0

的解決方案返回的每一天SUM,但我想知道的利潤總額和虧損一定。所以基本上我想知道我在某個時間點總共賺了多少錢。所以就像我希望能夠看到的那樣,在01-08-12這個企業賺取了40歐元的利潤。 – PriestVallon

+0

根據您的編輯更新了我的答案 – Dalen

回答

1

假設Date作爲你顯示出對預期結果這應該工作存放:

SELECT 
    SUM(Amount) AS "Profit/Loss", 
    Date 
FROM your_table 
GROUP BY(Date) 

否則ID DateDATE類型,DATETIMETIMESTAMP你可以做這樣的事情:

SELECT 
    SUM(Amount) AS "Profit/Loss", 
    DATE_FORMAT(Date, '%d-%m-%y') AS Date 
FROM your_table 
GROUP BY(DATE_FORMAT(Date, '%d-%m-%y')) 

參考號:

EDIT(OP的評論後)

實現COMULATIVE SUM here是一個很好的提示:

SET @csum := 0; 
SELECT 
    (@csum := @csum + x.ProfitLoss) as ProfitLoss, 
    x.Date 
FROM 
(
    SELECT 
     SUM(Amount) AS ProfitLoss, 
     DATE_FORMAT(Date, '%d-%m-%y') AS Date 
    FROM your_table 
    GROUP BY(DATE_FORMAT(Date, '%d-%m-%y')) 
) x 
order by x.Date; 

essentialy您當前的總和存入一個變量(@csum),並且對於分組交易的每一行,您可以通過每日ba增加它槍

+1

我應該認爲名爲'Profit/Loss'的列在MySQL中不起作用? ':)' – halfer

+0

@halfer你說得對,回答更新,謝謝 – Dalen

+0

不用擔心。 Tbh我可能會完全避開斜線,但無論如何+1。 – halfer

2
SELECT SUM(Amount) AS ProfitOrLoss FROM TableName GROUP BY Date 
1
SELECT SUM(Amount) FROM TableName GROUP BY Date