2014-06-19 45 views
1

我不擅長sql,但我可以創建,瞭解常見的SQL查詢。在瀏覽網頁時,似乎很難在此查詢中找到適合的方式。mysql從查詢的2個字段的結果中獲得差異

我有一個查詢是

SELECT COUNT(`BetID`), 
     FORMAT(SUM(`BetAmount`),0), 
     FORMAT(SUM(`Payout`),0), 
     ROUND((SUM(`BetAmount`)/COUNT(`BetID`)),2), 
     ROUND((((SUM(`BetAmount`) + SUM(`Payout`))/SUM(`Payout`)) * 100),2) 
FROM `betdb` 

我想減去

FORMAT(SUM(`BetAmount`),0) 

FORMAT(SUM(`Payout`),0) 

任何其他的想法,結果在這個MySQL查詢執行減法?

回答

0

如果你想在數字之前四捨五入減去它們(這似乎當你想減去格式化的數字是這樣),你」首先需要將它們舍入爲與格式相同的精度,然後減去並最後格式化結果;

SELECT COUNT(`BetID`), 
     FORMAT(SUM(`BetAmount`),0), 
     FORMAT(SUM(`Payout`),0), 
     FORMAT(ROUND(SUM(`BetAmount`),0) - ROUND(SUM(`Payout`),0),0) diff, 
     ROUND((SUM(`BetAmount`)/COUNT(`BetID`)),2), 
     ROUND((((SUM(`BetAmount`) + SUM(`Payout`))/SUM(`Payout`)) * 100),2) 
FROM `betdb` 

A simple SQLfiddle to test with

+0

哦,我明白了,在減去之前舍入數字也是可以的。謝謝你,先生! – hikki

0

使用FORMAT((SUM(BetAmount) - SUM(Payout)),0)

試試這個:

SELECT COUNT(`BetID`), 
     FORMAT(SUM(`BetAmount`),0), 
     FORMAT(SUM(`Payout`),0), 
     FORMAT((SUM(`BetAmount`) - SUM(`Payout`)),0), 
     ROUND((SUM(`BetAmount`)/COUNT(`BetID`)),2), 
     ROUND((((SUM(`BetAmount`) + SUM(`Payout`))/SUM(`Payout`)) * 100),2) 
FROM `betdb` 
+0

哦,我知道了,多謝先生! – hikki

0

您也可以嘗試使用,這樣的計算只進行一次連接語句:

SELECT *,t.BetTotal - t.PayoutTotal as Difference 
FROM (
    SELECT 
     COUNT(`BetID`) AS Count, 
     FORMAT(SUM(`BetAmount`),0) as BetTotal, 
     FORMAT(SUM(`Payout`),0) as PayoutTotal, 
     ROUND((SUM(`BetAmount`)/COUNT(`BetID`)),2), 
     ROUND((((SUM(`BetAmount`) + SUM(`Payout`))/SUM(`Payout`)) * 100),2) 
    FROM `betdb` 
) as t 
相關問題