Hitachi

Hitachi Advanced Database SQLリファレンス


7.23.13 PERCENTILE_DISC

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

〈この項の構成〉

(1) 指定形式

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

(2) 指定形式の説明

値指定

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

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

  • 0〜1の値(INTEGER型,BIGINT型,SMALLINT型,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‒33 ソート指定リストのソートキーに指定できるデータ型と逆分布関数PERCENTILE_DISCの実行結果のデータ型

    項番

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

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

    1

    BIGINT

    BIGINT

    2

    INTEGER

    INTEGER

    3

    SMALLINT

    SMALLINT

    4

    DECIMAL(m,n)

    DECIMAL(m,n)

    5

    NUMERIC(m,n)

    6

    DOUBLE PRECISION

    DOUBLE PRECISION

    7

    FLOAT

    8

    REAL

    REAL

    9

    CHAR(n)

    CHAR(n)

    10

    VARCHAR(n)

    VARCHAR(n)

    11

    STRING

    STRING

    12

    DATE

    DATE

    13

    TIME(p)

    TIME(p)

    14

    TIMESTAMP(p) WITHOUT TIME ZONE

    TIMESTAMP(p) WITHOUT TIME ZONE

    15

    TIMESTAMP(p) WITH TIME ZONE

    TIMESTAMP(p) WITH TIME ZONE

    16

    BOOLEAN

    BOOLEAN

    注※

    整数データ型のデータ形式がレガシー形式の場合は,実行結果のデータ型はINTEGER型になります。

  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は,集計対象の一連の値だけを使用して結果を返しているためです。