将值除以列的总和

时间:2014-08-03 04:19:05

标签: mysql sql

表格如下:

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

3 个答案:

答案 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是正常的,因为内部查询保证返回单行。