DENSE_RANK

集計構文

dense_rank_aggregate::=

dense_rank_aggregate の説明です。gif は次のようになります

Description of the illustration dense_rank_aggregate.gif

Analytic Syntax

dense_rank_analytic::=

Description of dense_rank_analytic.gif </p>Dense_rank_analytic::= <p>dense_rank_agregate::=<8893gif は次のようになります

dense_rank_analytic.gif の説明

See Also:

“Analytic Functions” for information on syntax, semantics, and restrictions

目的

DENSE_RANK行の順序グループ内での行のランクを計算し NUMBER として返します。 ランクは 1 から始まる連続した整数であり、最大のランク値はクエリによって返されるユニークな値の数である。 同値の場合、順位値はスキップされない。 順位付けの基準で同じ値を持つ行は、同じ順位となる。

  • As an aggregate function, DENSE_RANK calculates the dense rank of the hypothetical row identified by the arguments of the function respect to a given sort specification.この関数はトップNおよびボトムNレポートに対して有効である。 関数の引数は、各グループ内の単一の行を識別するため、各集約グループ内の定数式にすべて評価されなければなりません。 定数引数式と集約のorder_by_clause内の式は、位置によって一致します。 したがって、引数の数は同じでなければならず、型は互換性がなければなりません。

  • 解析関数として、DENSE_RANKorder_by_clause内のvalue_exprsの値に基づいて、他の行に関して問い合わせから返される各行のランクを計算します。

集計例

次の例では、サンプル テーブル oe.employees で給与 15,500 ドル、コミッション 5% の仮想の従業員の順位を計算します:

SELECT DENSE_RANK(15500, .05) WITHIN GROUP (ORDER BY salary DESC, commission_pct) "Dense Rank" FROM employees; Dense Rank------------------- 3

分析例

次のステートメントは、人事部または購買部で働くすべての従業員の部署名、従業員名、給与を選択して、2 部署それぞれの固有の給与に対するランクを計算します。 等しい給与は同じランクを受け取ります。 この例をRANK.

SELECT d.department_name, e.last_name, e.salary, DENSE_RANK() OVER (PARTITION BY e.department_id ORDER BY e.salary) AS drank FROM employees e, departments d WHERE e.department_id = d.department_id AND d.department_id IN ('30', '40');DEPARTMENT_NAME LAST_NAME SALARY DRANK----------------------- ------------------ ---------- ----------Purchasing Colmenares 2500 1Purchasing Himuro 2600 2Purchasing Tobias 2800 3Purchasing Baida 2900 4Purchasing Khoo 3100 5Purchasing Raphaely 11000 6Human Resources Marvis 6500 

の例と比較してみてください。

Leave a Reply