Oracle 平均値を求める 集約関数「AVG」

スポンサーリンク
スポンサーリンク

平均値を求める 集約関数「AVG」

集約関数の「AVG」を使うと、平均値を求めることができます。

集約関数「AVG」の基本構文

「ALL」と「DISTINCT」はオプションで、省略可能です。
省略した場合は、デフォルトの「ALL」となります。

「DISTINCT」は重複行を除いてくれます。

AVG([ALL | DISTINCT] <数値式>)

検証用のテーブルとデータの用意

以下のテーブルとデータを使用して検証を行っていきましょう。

TEST_TABLE
id year month sales
001 2019 1 100
002 2019 1 200
003 2019 2 300
004 2019 2 NULL
SQL> CREATE TABLE test_table
  2  (
  3      id     VARCHAR2(3)
  4      ,year  NUMBER
  5      ,month NUMBER
  6      ,sales NUMBER
  7  );

表が作成されました。

SQL> INSERT ALL
  2  INTO test_table VALUES('001', '2019', '1' , '100')
  3  INTO test_table VALUES('002', '2019', '1' , '200')
  4  INTO test_table VALUES('003', '2019', '2' , '300')
  5  INTO test_table VALUES('004', '2019', '2' , NULL)
  6  SELECT * FROM dual;

4行が作成されました。

INSERT文の書き方が少し特殊ですが、複数行INSERTっていう記述の仕方をしています。気になるかたは別に記事書いているので構文とか確認してみてください。
複数行INSERTの構文について

集約関数「AVG」の使用例

ここで注目してほしいのが「NULL」の取り扱いです。
「NULL」は集計関数を使用する際にすべて除外されます。
※数字の「0」とも扱いが異なります。計算から除外されるということを覚えておきましょう!

SQL> SELECT AVG(sales) FROM test_table;

AVG(SALES)
----------
       200

コメント

タイトルとURLをコピーしました