「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Oracle SQL列から上位5つの最大値を取得するにはどうすればよいですか?

Oracle SQL列から上位5つの最大値を取得するにはどうすればよいですか?

2025 年 1 月 24 日に公開
ブラウズ:737

How to Get the Top 5 Highest Values from an Oracle SQL Column?

Oracle SQL:列の上位5の最大値を取得する方法

データベースクエリでは、結果は通常、特定の列の最大値または最小値など、特定の特性を持つ線に限定されます。 Oracle SQLでは、分析関数(rank()、dense_rank()、またはrow_number()などの分析関数を使用して、この目的を達成できます。

最高値ランク()およびdense_rank()

rank()やdense_rank()などの分析関数は、指定されたソートに従って各行にAレベルを割り当てます。列の上位5の最大値を取得するには、次のクエリ形式を使用できます。

select * from(from(from(from rnkとして、rank()over( desc)overを選択します から 治す ここでrnk rank()最高値1から始まる各行に数値レベルを割り当てます。 DENSE_RANK()は、同じ値があるときにギャップを圧縮し、同時にレベルを割り当てました。 ]一定数の行のrow_number()

row_number()分析関数は、各行のシリアル番号を割り当てます。それを使用して、その価値に関係なく、特定の数の行を取得できます。例えば:

SELECT *
FROM (
  SELECT , RANK() OVER (ORDER BY  DESC) AS rnk
  FROM 
)
WHERE rnk 
を使用する

それは一般的ではありませんが、Rownum Pseudo列を使用して結果を特定の量に制限することもできます。ただし、rownumは命令で命令前に評価されるため、予測不可能な結果につながる可能性があるため、注意して使用する必要があります。

例:最高の給与を持つ従業員 rank()とdense_rank()の使用法を説明するために、最高の給与を持つ5人の従業員の使用法:

select * from(from(from(from rnkとしてempno、sal、rank()over(sal descによる注文)を選択します Empから 治す ここでrnk このクエリは、従業員の給与に基づいて各従業員に数値レベルを割り当てます。次に、給与の減少の順に上位5人の従業員を示します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3