-2

我在 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列将被生成并将保存如表中所示的值。

对于这个例子,总和field119.9

field1值也会经常变化。

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

谢谢

4

3 回答 3

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

于 2012-10-17T16:54:32.943 回答
1
SELECT  a.*, (b.totalSum / a.field1)
FROM    table1 a
        CROSS JOIN
        (
            SELECT SUM(filed1) totalSum
            FROM tableName
        ) b

SQLFiddle 演示

于 2012-10-17T16:49:38.263 回答
1

您可以将SUMOVER 子句一起使用。

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

SQLFiddle

于 2012-10-17T17:02:06.807 回答