1

我无法编写查询来通过对列进行分组来计算百分比。

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)分组计算的。

4

1 回答 1

3

尝试这个:

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
于 2013-11-07T09:34:50.237 回答