web-dev-qa-db-ja.com

ピボット計算式:SUM(Field1)/ AVG(Field2)

日付と製品名ごとに、秒単位の量と間隔の簡単な表があります。

_Month | Product | Amount | Interval in sec
------------------------------------------
05-'12| Prod A  | 10     | 5
05-'12| Prod A  | 3      | 5
05-'12| Prod B  | 4      | 5
05-'12| Prod C  | 13     | 5
05-'12| Prod C  | 5      | 5
_

このテーブルから、月および製品ごとにSUM(Amount)、AVERAGE(Interval in sec)を使用してピボットテーブルを導出しました。

_Month | Product | SUM of Amount | AVG of Interval in sec
--------------------------------------------------------
05-'12| Prod A  | 13            | 5
05-'12| Prod B  | 4             | 5
05-'12| Prod C  | 18            | 5
_

ここまでは順調ですね。ここで、ピボットテーブルに追加の列を追加して、SUM of Amount/AVG of Interval of sec。

計算値=SUM(Amount)/AVERAGE(Interval)を追加しても、適切な値が得られません。 Excelは私に与えます:

_Month | Product | SUM of Amount | AVG of Interval in sec | Amount per sec
-------------------------------------------------------------------------
05-'12| Prod A  | 13            | 5                      | 1.3
05-'12| Prod B  | 4             | 5                      | 0.8
05-'12| Prod C  | 18            | 5                      | 1.8
_

それが実際に行っていることは、最初の表の値に基づいて、すべての月と製品の= SUM(Amount)/ SUM(Interval in sec)です。しかし、私は探しています:

_Month | Product | SUM of Amount | AVG of Interval in sec | Amount per sec
-------------------------------------------------------------------------
05-'12| Prod A  | 13            | 5                      | 2.6
05-'12| Prod B  | 4             | 5                      | 0.8
05-'12| Prod C  | 18            | 5                      | 3.6
_

したがって、ピボットフィールド「Sum of Amount」をピボットフィールド「AVG of Interval in sec」で文字どおりに除算します。

これを達成する方法は?

11
Creep

他の誰かがこの問題に遭遇した場合、私が見つけた解決策は、データセットにヘルパーの「カウント」列を追加することです。この場合、各レコードの「カウント」フィールドに1が入力されています。

次に、平均の効果を達成するために、以下を使用できます。

SUM(FIELD_TO_AVERAGE)/SUM(COUNT)

これは、平均が必要なすべてのケースで機能するはずだと思いますが、あまり広くテストしていません。

8
ThreeTrickPony

次のように、数式でピボットテーブルデータを参照する必要があります。

=GETPIVOTDATA("Sum of Amount",$A$3,"Product","A")/GETPIVOTDATA("Average of Interval",$A$3,"Product","A")

編集:スプレッドシートから:ピボットテーブルAに目的の列を追加するには:

K5=GETPIVOTDATA("Sum of Amount",$H$2,"Month",DATE(2012,5,1),"Product","Prod A")/GETPIVOTDATA("Average of Interval",$H$2,"Month",DATE(2012,5,1),"Product","Prod A")
K6=GETPIVOTDATA("Sum of Amount",$H$2,"Month",DATE(2012,5,1),"Product","Prod B")/GETPIVOTDATA("Average of Interval",$H$2,"Month",DATE(2012,5,1),"Product","Prod B")
K7=GETPIVOTDATA("Sum of Amount",$H$2,"Month",DATE(2012,5,1),"Product","Prod C")/GETPIVOTDATA("Average of Interval",$H$2,"Month",DATE(2012,5,1),"Product","Prod C")

元のデータテーブルに次の列を追加して列を作成することもできます。個々のエントリごとに量/秒。すべてのデータをピボットすると、その列の積が目的の結果になります。

編集(2):

上記の数式はセル数式であり、ピボットテーブルの数式ではないため、参照を使用できません。私はピボットテーブルの計算式を調べていますが、今のところ、ピボットテーブルの横にある列として、上記が必要なものを生成するはずです。

4
Alistair Weir

ソース(カウンター)にフィールドを作成し、すべての行に「1」を入れます。それもピボットに入れて、このフィールドで秒の合計を割ります-それから平均になります。元のフィールドをこの平均で除算するので、最終的な最終除算は、カウンターごとの合計秒あたりの量になり、それがトリックになります:)

0
Viktor Lippai