回答編集履歴

3

推敲

2024/03/21 08:48

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -1,7 +1,4 @@
1
1
  欠損値というのがNullを指しているなら、Null値は集約対象とはならないからです。
2
- 「1を掛ける」ことは関係ありません。
3
- 逆に、COALESCE()によってNullを回避した場合は結果が変わるはずです。
4
-
5
2
  [集約関数](https://www.postgresql.jp/document/15/html/functions-aggregate.html)
6
3
  > avg ( smallint ) → numeric
7
4
  > avg ( integer ) → numeric
@@ -12,3 +9,8 @@
12
9
  > avg ( interval ) → interval
13
10
  > すべての**非NULL入力値の平均**(算術平均)を計算します。
14
11
 
12
+ 「1を掛ける」ことは関係ありません。
13
+ 逆に、COALESCE()によってNullを回避した場合は結果が変わるはずです。
14
+ > AVG((COALESCE(unit_price, 1.0) - unit_cost) / COALESCE(unit_price, 1.0)) AS unit_profit_rate
15
+ > と記述したのと同じ結果が出力されるのですが、
16
+ 上記で結果が変わらないなら、`unit_cost`がNullなのではないでしょうか。

2

追記

2024/03/21 08:46

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -1,5 +1,6 @@
1
1
  欠損値というのがNullを指しているなら、Null値は集約対象とはならないからです。
2
2
  「1を掛ける」ことは関係ありません。
3
+ 逆に、COALESCE()によってNullを回避した場合は結果が変わるはずです。
3
4
 
4
5
  [集約関数](https://www.postgresql.jp/document/15/html/functions-aggregate.html)
5
6
  > avg ( smallint ) → numeric

1

追記

2024/03/21 08:41

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -1,2 +1,13 @@
1
1
  欠損値というのがNullを指しているなら、Null値は集約対象とはならないからです。
2
2
  「1を掛ける」ことは関係ありません。
3
+
4
+ [集約関数](https://www.postgresql.jp/document/15/html/functions-aggregate.html)
5
+ > avg ( smallint ) → numeric
6
+ > avg ( integer ) → numeric
7
+ > avg ( bigint ) → numeric
8
+ > avg ( numeric ) → numeric
9
+ > avg ( real ) → double precision
10
+ > avg ( double precision ) → double precision
11
+ > avg ( interval ) → interval
12
+ > すべての**非NULL入力値の平均**(算術平均)を計算します。
13
+