カテゴリ:

集計関数 (一般)

SKEW

NULL 以外のレコードのサンプルの歪度を返します。グループ内のすべてのレコードが NULLの場合、関数は NULLを返します。

サンプルの歪度を計算するには、次の式を使用します。

\[(n^2)/((n-1) * (n-2)) * (m_3/(k_2)^(1.5))\]

条件:

  • \(n\) は、NULL以外のレコードの数を示します。

  • \(m_3\) は、サンプルの3番目の中心モーメントを示します。

  • \(k_2\) は、分散の対称不偏推定量を示します。

スキューは、基礎となる分布がどれほど非対称であるかを直観的に表します。

構文

SKEW( <expr> )

引数

これは、数値データ型(INTEGER、 FLOAT、 DECIMALなど)に評価される式です。

戻り値

この関数は DOUBLE型の値を返します。

使用上の注意

  • レコードが3つ未満の入力の場合、 SKEW は NULLを返します。

テーブルを作成し、データをロードします。

create or replace table aggr(k int, v decimal(10,2), v2 decimal(10, 2));

insert into aggr values
    (1, 10, null),
    (2, 10, null),
    (2, 20, 22),
    (2, 25, null),
    (2, 30, 35);

データを表示します。

select * 
    from aggr
    order by k, v;
+---+-------+-------+
| K |     V |    V2 |
|---+-------+-------|
| 1 | 10.00 |  NULL |
| 2 | 10.00 |  NULL |
| 2 | 20.00 | 22.00 |
| 2 | 25.00 |  NULL |
| 2 | 30.00 | 35.00 |
+---+-------+-------+

データをクエリします。

select SKEW(K), SKEW(V), SKEW(V2) 
    from aggr;
+--------------+---------------+----------+
|      SKEW(K) |       SKEW(V) | SKEW(V2) |
|--------------+---------------+----------|
| -2.236069766 | 0.05240788515 |     NULL |
+--------------+---------------+----------+