-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列が生成され、表に示すように値が保持されます。

この例では、の合計はfield1です19.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

SQLフィドル

于 2012-10-17T17:02:06.807 に答える