我在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
值的查询,这些值也是小数,因此需要精确的总和。
由于
答案 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
如果您无权访问outer apply
,则可以使用笛卡尔结果查询:
select t1.id,
t1.field1,
(t2.field1 / t1.field1) field2
from table1 t1,
(
select sum(field1) field1
from table1
) t2
答案 1 :(得分:1)
SELECT a.*, (b.totalSum / a.field1)
FROM table1 a
CROSS JOIN
(
SELECT SUM(filed1) totalSum
FROM tableName
) b
答案 2 :(得分:1)
您可以将SUM与OVER Clause 一起使用。
select Id,
field1,
(sum(field1) over() / field1) as field2
from YourTable