2015-11-03 84 views
3

內計算百分比如何這個結果轉換:MySQL查詢到每個組

week,day,hour,branch,sales 
1,1,1,a,50 
1,1,1,b,50 
1,1,2,a,25 
1,1,2,b,75 

進入這個:

week,day,hour,branch,sales,percentage 
1,1,1,a,50,50% 
1,1,1,b,50,50% 
1,1,2,a,25,25% 
1,1,2,b,75,75% 

注意,百分比以每小時分組。換句話說,它不是所有銷售額的百分比,而是每小時內的銷售額。我曾嘗試下面的查詢,但是這給了我所有的銷售百分比:

SELECT week,day,hour,branch,sales, 
(sales/(SELECT SUM(sales) FROM test))*100 AS Percentage 
FROM test 
GROUP BY week,day,hour,branch 

回答

1

使用相關子查詢:

SELECT week, day, hour, branch, sales, 
     (sales/(SELECT SUM(sales) 
       FROM test t2 
       WHERE t2.hour = t.hour and t2.week = t.week and t2.day = t.day 
      ) 
     ) * 100 AS Percentage 
FROM test t 
GROUP BY week, day, hour, branch; 
+0

完美。謝謝戈登。 – Adnan

+0

雖然此查詢有效,但在大型表上它變得非常慢。我在大約120000行的桌子上嘗試過,20分鐘後我仍在等待結果。我想知道是否有一種方法來優化大型表格? – Adnan

+0

@Adnan。 。 。嘗試在'test(week,day,hour,sales)'上添加一個索引',看看是否有幫助。 –