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;
完美。谢谢戈登。 – Adnan
虽然此查询有效,但在大型表上它变得非常慢。我在大约120000行的桌子上尝试过,20分钟后我仍在等待结果。我想知道是否有一种方法来优化大型表格? – Adnan
@Adnan。 。 。尝试在'test(week,day,hour,sales)'上添加一个索引',看看是否有帮助。 –