Rank - チャート関数
Rank() は、数式におけるチャートの行を評価し、それぞれの行に対して、数式で評価される軸の値の相対位置を示します。この関数は数式の評価時に、結果を現在の列セグメントに含まれるその他の行の結果と比較して、セグメント内の現在の行の順位付けを返します。
テーブル以外のチャートでは、現在の列セグメントはチャートのストレートテーブルに相当するセグメントに従い定義されます。
構文:
Rank([TOTAL expr[, mode[, fmt]])
戻り値データ型: デュアル
引数:
- expr: メジャーの対象となるデータが含まれている数式または項目。
- mode: 関数の計算結果の数値表現を指定します。
- fmt: 関数の計算結果のテキスト表現を指定します。
- TOTAL:チャートが 1 軸の場合、または数式の前に TOTAL 修飾子が付加されている場合は、関数は列全体を評価します。 テーブルまたはテーブルに相当するアイテムに複数の縦軸が含まれる場合、現在の列セグメントには、項目ソート順の最後の軸を表示する列を除く、すべての軸列の現在行と同じ値を持つ行のみが含まれます。
ランキングは、デュアル値として返されます。行ごとに固有のランキングがある場合、1 から現在の列セグメント内の行数を示す整数になります。
複数の行がランキングを共有する場合は、テキストおよび数値表現を mode および fmt のパラメータで制御できます。
mode
2 番目の引数 mode は、次の値を取ることができます。
値 | 説明 |
---|---|
0 (デフォルト) |
共有グループ内のすべての順位がランキング全体の中間値以下に入る場合、いずれの行も共有グループ内の最低順位を取得します。 共有グループ内のすべての順位が順位付け全体の中間値以上に入る場合は、いずれの行も共有グループ内の最高順位を取得します。 共有グループ内の順位がランキング全体の中間値をまたぐ場合は、いずれの行も列セグメント全体の最高順位と最低順位の平均に相当する値を取得します。 |
1 | すべての行における最低順位。 |
2 | すべての行における平均順位。 |
3 | すべての行における最高順位。 |
4 | 最初の行における最低順位、その後は行ごとに 1 ずつ増加。 |
fmt
3 番目の引数 fmt は、次のいずれかの値になります。
値 | 説明 |
---|---|
0 (デフォルト) | すべての行における低い値 - 高い値 (例: 3 - 4)。 |
1 | すべての行における低い値。 |
2 | 最初の行における低い値、その後のグループ内の行は空白。 |
mode 4 と fmt 2 の行の順序は、チャート軸のソート順で決定されます。
例と結果:
軸 Product および Sales から 2 つのチャートを作成し、Product および UnitSales からもう 1 つのチャートを作成します。次のテーブルに示すように、メジャーを追加します。
例1:
軸 Customer および Sales とメジャー Rank(Sales) を持つテーブルを作成します。
結果は軸のソート順により異なります。テーブルが Customer でソートされている場合、Astrida のすべての Sales の値が表示されます (Betacab 以降も同様)。Rank(Sales) の結果は、 Sales の値 12 に対して 10、Sales の値 13 に対して 9 と順番に、Sales の値 78 に対して rank 値 1 が返されます。次の列セグメントは Betacab で始まり、セグメント内の Sales の最初の値は 12 です。この Rank(Sales) の rank 値は 11 として指定されています。
テーブルが Sales でソートされている場合、列セグメントは Sales の値と対応する Customer の値で構成されます。12 という Sales の値が 2 つ (Astrida および Betacab) あるため、その列セグメントの Rank(Sales) の値は Customer の各値で 1-2 となります。これは、Sales の値が 12 の Customer が 2 つあるためです。値が 4 つあった場合は、すべての行で 1-4 になります。これは、引数 fmt のデフォルト値 (0) の結果がどのようになるかを示しています。
例2:
軸 Customer を Product に置換し、メジャー Rank(Sales,1,2) を追加します。
この場合、引数 mode および fmt はそれぞれ 1 と 2 に設定されているため、各列セグメントの最初の行には 1 が返され、その他の行は空白となります。
例で使用されているデータ:
ProductData:
Load * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|CC|2|20
Betacab|DD|0|25
Canutility|AA|8|15
Canutility|CC|0|19
] (delimiter is '|');
Sales2013:
crosstable (Month, Sales) LOAD * inline [
Customer|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec
Astrida|46|60|70|13|78|20|45|65|78|12|78|22
Betacab|65|56|22|79|12|56|45|24|32|78|55|15
Canutility|77|68|34|91|24|68|57|36|44|90|67|27
Divadip|57|36|44|90|67|27|57|68|47|90|80|94
] (delimiter is '|');