percentile_disc()
指定されたパーセントに対応する値を返します。
1percentile_disc(p) within group (order by expr [asc | desc])percentile_disc() は、グループ化された数値式 expr を受け入れ、指定された順序で並び替えます。順序が指定されていない場合、デフォルトの順序は昇順です。並び替えた順序でグループ内の値の (100*p)% の位置にある値を返します (null 値は無視)。
p には、小数点以下 8 桁の精度を持つ 0 ~ 1 の任意の実数値を指定できます。expr には「xInt」や「price」など任意の識別子を使用できますが、price/100 または ceil(distance) などの複雑な式や、2.5 などのリテラルは使用できません。
expr に正確な 100*p パーセントの位置の値がない場合、percentile_disc() は並び替え順で expr の次の位置にある値を返します。
たとえば、Mea1 に値 [54, 35, 15, 15, 76, 87, 78] が含まれる場合、次の値が返されます。
1percentile_disc(0.5) within group (order by Mea1) == 54
2percentile_disc(0.72) within group (order by Mea1) == 78例 - 商談規模の上位 4 分の 1 で営業担当をランク付けする
最大の商談を完了した営業担当を表示するとします。(一部の営業担当が多数の小さな商談を完了した場合は、結果と商談金額の合計が異なることがあります)。また、商談規模の平均ではなく、実際の商談規模をグラフに表示するとします。percentile_disc(.25) を使用して、各営業担当の商談規模の上位 4 分の 1 を確認します。
1q = load "DTC_Opportunity_SAMPLE";
2q = group q by 'Account_Owner';
3q = foreach q generate 'Account_Owner' as 'Account_Owner', percentile_disc(0.25) within group (order by 'Amount' desc) as 'Amount';
4q = order q by 'Amount' desc;Julie Chavez の商談の 25% が 240 万ドルを超えており、Kelly Frazier の商談の 25% が 220 万ドルを超えていることがわかります。また、Julie は商談を 240 万ドルで完了し、この数値が平均でないこともわかります。
