2015-11-06 105 views
0

我想計算上一年的增長百分比。計算上一年和當年之間的增長百分比

表結構:

CustomerName | Sum_1415 | Sum_1516 

我曾嘗試此查詢:

select CustomerName, SUM(Sum_1415), SUM(Sum_1516), 
    round(sum(Sum_1516)-Sum(Sum_1415)/(select sum(Sum_1415) from dummy),2) as Percentage 
from dummy 
group by CustomerName 
order by Sum_1415 desc 
limit 15 
+0

很難理解你在做什麼。使用當前查詢顯示一些示例數據,預期輸出和問題? –

+0

子查詢'(從虛擬中選擇總和(Sum_1415))'不會被'客戶名稱'分組,因此它將成爲所有客戶的總和。 – Barmar

+0

表結構如上。總額1415包含2014-2015年客戶收入,總額1516包含同一客戶的收入。我們需要添加需要計算的增長百分比列。 – Fresher

回答

1

sum(Sum_1415)更換子查詢(select sum(Sum_1415) from dummy)。否則,您將計算每個客戶的增長與上一年所有收入總額的比率,而不是該客戶的總額。

您還在ROUND調用中丟失了一些括號,圍繞減法sum(Sum_1516)-Sum(Sum_1415)

select CustomerName, SUM(Sum_1415) AS Sum_1415, SUM(Sum_1516) AS Sum_1516, 
    round((sum(Sum_1516)-Sum(Sum_1415))/SUM(Sum_1415),2) as Percentage 
from dummy 
group by CustomerName 
order by Sum_1415 desc 
limit 15 

我可能會重構這個爲子查詢,所以它不是必要保持重複SUM表達式。

SELECT CustomerName, Sum_1415, Sum_1516, ROUND((Sum_1516-Sum_1415)/Sum_1415, 2) AS Percentage 
FROM (SELECT CustomerName, SUM(Sum_1415) AS Sum_1415, SUM(Sum_1516) AS Sum_1516 
     FROM dummy 
     GROUP BY CustomerName 
     ORDER BY Sum_1516 DESC 
     LIMIT 15) AS x 
+0

我已經嘗試了您的查詢,但我們沒有得到所需的輸出。 – Fresher

+0

請更新帶有樣品輸入和所需輸出的問題。一個sqlfiddle也會有幫助。 – Barmar

+0

您在「ROUND」調用中添加圓括號之前是否嘗試過?您的運營商優先級錯誤,因此它不會與上一年的差異分開。 – Barmar