我无法编写查询来通过对列进行分组来计算百分比。
Itemname,value
A,3
B,2
A,7
B,8
输出应该是
itemname,value,percentage
A,3,30
A,7,70
B,2,20
B,8,80
百分比是按项目名称(例如 A)分组计算的。
我无法编写查询来通过对列进行分组来计算百分比。
Itemname,value
A,3
B,2
A,7
B,8
输出应该是
itemname,value,percentage
A,3,30
A,7,70
B,2,20
B,8,80
百分比是按项目名称(例如 A)分组计算的。
尝试这个:
CREATE TABLE my_tab (
Itemname VARCHAR(1),
value INT
);
INSERT INTO my_tab VALUES ('A', 3);
INSERT INTO my_tab VALUES ('B', 2);
INSERT INTO my_tab VALUES ('A', 7);
INSERT INTO my_tab VALUES ('B', 8);
SELECT
mt.itemname,
mt.value,
mt.value * 100 / agg.value_sum AS percentage
FROM
my_tab mt
JOIN (SELECT
itemname,
SUM(value) AS value_sum
FROM my_tab
GROUP BY itemname
) agg ON (mt.itemname = agg.itemname)
;
在 SQLFiddle 检查:SQLFiddle Example
输出:
项目名称值百分比 一个 3 30 一个 7 70 乙 2 20 乙 8 80