我有这段代码,它总结了员工的小时数并使用 rollup 来获得总小时数:
SELECT IFNULL(users, 'Total') AS Employee,
SUM(actual) AS Amount
FROM table1
WHERE name = "ProjectName"
GROUP BY users
WITH ROLLUP
Employee | Amount
A | 15
B | 10
C | 10
Total | 35
我想为我的第三列(百分比)做的是将总和(实际)除以总值以获得百分比。 但对于该百分比列,我不需要获取总百分比。
总值并不恒定为 35。
Employee | Amount | Percent
A | 15 | 42.85
B | 10 | 28.57
C | 10 | 28.57
Total | 35 |
我该怎么做? 这是 sqlfiddle:http://sqlfiddle.com/#!2/4543b/5
最佳答案
这按预期工作:
SET @project_name = 'ProjectName';
SELECT IFNULL(users, 'Total') AS Employee, SUM(actual) AS Amount,
IF(ISNULL(users), '', TRUNCATE(SUM(actual) / sum_table.amount_sum * 100, 2)
) AS Percent
FROM Table1
INNER JOIN (
SELECT SUM(actual) AS amount_sum
FROM Table1
WHERE name = @project_name
) AS sum_table
WHERE name = @project_name
GROUP BY users
WITH ROLLUP;
演示 @ SQL Fiddle
关于mysql - 除以汇总值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22870016/