MySQL查询到每个组

MySQL查询到每个组

问题描述:

内计算百分比如何这个结果转换: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 

使用相关子查询:

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)'上添加一个索引',看看是否有帮助。 –