通过除以列的总和来查找列值

时间:2012-10-17 16:45:36

标签: sql sql-server-2005 netezza

我在Netezza数据库中有一个包含以下列的表

Id  field1  field2      
 1   0.9    sum(field1)/0.9
 2   1.7    sum(field1)/1.7
 3   6.9    sum(field1)/6.9
 4   0.4    sum(field1)/0.4
 5   0.2    sum(field1)/0.2
 6   2.8    sum(field1)/2.8
 7   7.0    sum(field1)/7.0

将生成field2列,并保留值,如表中所示。

对于此示例,field1的总和为19.9

field1值也会经常更改。

请帮助查询有助于计算field2值的查询,这些值也是小数,因此需要精确的总和。

由于

3 个答案:

答案 0 :(得分:2)

您可以使用OUTER APPLY

select t1.id,
  t1.field1,
  (t2.field1 / t1.field1) field2
from table1 t1
outer apply
(
  select sum(field1) field1
  from table1
) t2

请参阅SQL Fiddle with Demo

如果您无权访问outer apply,则可以使用笛卡尔结果查询:

select t1.id,
  t1.field1,
  (t2.field1 / t1.field1) field2
from table1 t1, 
(
  select sum(field1) field1
  from table1
) t2

请参阅SQL Fiddle with Demo

答案 1 :(得分:1)

SELECT  a.*, (b.totalSum / a.field1)
FROM    table1 a
        CROSS JOIN
        (
            SELECT SUM(filed1) totalSum
            FROM tableName
        ) b

SQLFiddle Demo

答案 2 :(得分:1)

您可以将SUMOVER Clause 一起使用。

select Id,
       field1,
       (sum(field1) over() / field1) as field2
from YourTable

SQLFiddle