Hitachi

Hitachi Advanced Data Binder SQLリファレンス


7.23.13 PERCENTILE_DISC

順序付けされた一連の値のパーセンタイル(百分位数)を求めます。一連の値の中から結果を返します。

〈この項の構成〉

(1) 指定形式

逆分布関数PERCENTILE_DISC::=PERCENTILE_DISC(値指定) WITHINグループ指定
 
  WITHINグループ指定::=WITHIN GROUP(ORDER BY ソート指定リスト)

(2) 指定形式の説明

値指定

求めるパーセンタイルの値を値指定の形式で指定します。値指定については,「7.22 値指定」を参照してください。

指定規則を次に示します。

  • 0〜1の値(INTEGERBIGINTSMALLINT型,DECIMAL,またはNUMERICのデータ)を指定してください。

  • ナル値を指定した場合,実行結果はナル値になります。

  • ?パラメタを単独で指定した場合,?パラメタに仮定されるデータ型はDECIMAL(3,2)になります。

WITHINグループ指定
WITHINグループ指定::=WITHIN GROUP(ORDER BY ソート指定リスト)

WITHINグループ指定には,パーセンタイルを求めるデータとデータの並び順を指定します。ソート指定リストのソートキーにパーセンタイルを求めるデータを指定し,順序付け指定にデータの並び順(昇順,降順)を指定します。ソート指定リストについては,「7.25 ソート指定リスト」を参照してください。

指定規則を次に示します。

  • WITHINグループ指定のソート指定リストには,ナル値ソート順指定は指定できません。

  • WITHINグループ指定のソート指定リストには,ソート指定を2つ以上指定できません。

(3) 規則

  1. ナル値は集計対象に含まれません。

  2. 入力行数が0の場合,実行結果はナル値になります。

  3. ソート指定リストのソートキーに指定できるデータ型と逆分布関数PERCENTILE_DISCの実行結果のデータ型を次の表に示します。

    表7‒30 ソート指定リストのソートキーに指定できるデータ型と逆分布関数PERCENTILE_DISCの実行結果のデータ型

    項番

    ソート指定リストのソートキーに指定できるデータ型

    逆分布関数PERCENTILE_DISCの実行結果のデータ型

    1

    INTEGER

    INTEGER

    2

    BIGINT

    3

    SMALLINT

    SMALLINT

    4

    DECIMAL(m,n)

    DECIMAL(m,n)

    5

    NUMERIC(m,n)

    6

    DOUBLE PRECISION

    DOUBLE PRECISION

    7

    FLOAT

    8

    CHAR(n)

    CHAR(n)

    9

    VARCHAR(n)

    VARCHAR(n)

    10

    DATE

    DATE

    11

    TIME(p)

    TIME(p)

    12

    TIMESTAMP(p)

    TIMESTAMP(p)

  4. PERCENTILE_DISCは,順序付けされた一連の値の中から結果を返します。引数に値Pを指定した場合,ソート指定リストで指定された値式の値を並べ替えて,その値の中から同じソート指定リストに従うCUME_DISTの値がP以上となる最小の値を返します。

(4) 例題

例題

給与表(SALARYLIST)から,社員の給料(SALARY)の中央値(50パーセンタイル)を職級(POSITION)別に求めます。

PERCENTILE_CONTPERCENTILE_DISCを使用して,それぞれの中央値を求めます。

SELECT "POSITION",
        PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY "SALARY" ASC) AS "PERCENTILE_CONT",
        PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY "SALARY" ASC) AS "PERCENTILE_DISC"
    FROM "SALARYLIST"
    GROUP BY "POSITION"
    ORDER BY "POSITION"

[図データ]

上記のように,PERCENTILE_CONTPERCENTILE_DISCの結果が異なることがあります。これは,PERCENTILE_CONTは,線形補間された結果を返していますが,PERCENTILE_DISCは,集計対象の一連の値だけを使用して結果を返しているためです。