表格如下:
name--value1---value2
name1-----1-------4
name2-----2-------6
输出应为:
name---value1---value2
name1---.333-----.40
name2---.666-----.60
我在尝试:
select (value1/sum(value1), (value2/sum(value2)
from table
并仅输出name1的值。当我使用group by时,它会为所有值显示值1.
我正在使用MySQL Workbench
答案 0 :(得分:0)
请试试这个:
SELECT value1 / t2.sum_v1,
value2 / t2.sum_v2
FROM tab INNER JOIN (
SELECT SUM(value1) AS sum_v1,
SELECT SUM(value2) AS sum_v2
FROM tab ) t2;
答案 1 :(得分:0)
您必须将总和计算为子查询。所以在你的情况下,对于value1,它将是这样的:
select (value1 / (select sum(value1) from table)) from table;
答案 2 :(得分:0)
您可以对列进行求和,然后join
对该聚合查询求和:
SELECT name, value1 / sum1, value2/ sum2
FROM my_table
CROSS JOIN (SELECT SUM(value1) AS sum1, SUM(value2) AS sum 2
FROM my_table) t
请注意,使用cross join
是正常的,因为内部查询保证返回单行。