sql >> データベース >  >> RDS >> Mysql

n番目に高い給与を持つすべての従業員を見つけるためのMYSQLクエリ

    どうやら 合理的な質問のように。 SQLで物事を行うにはさまざまな方法があり、場合によっては他の方法よりも優れている方法もあります。ランキングの問題は、多くの例の1つにすぎません。あなたの質問に対する「答え」は、一般的に、並べ替えです。 group byよりもパフォーマンスが向上します MySQLで。それでも、特定のデータとあなたが「より良い」と考えるものに依存します。

    質問に関する特定の問題は、3つの異なるものを返す3つの異なるクエリがあることです。

    1つ目は、同じ「密なランク」を持つすべての従業員を返します。この用語は、ANSI density_rank()に対応しているため、意図的に使用されています。 MySQLがサポートしていない機能。したがって、給与が100、100、および10の場合、ランキングが1の2つの行と、ランキングが2の1つの行が返されます。

    同点がある場合、2番目は異なる結果を返します。給与が100、100、10の場合、このバージョンはランキング1の行を返さず、ランキング2の2行、ランキング3の1行を返します。

    3つ目は、給与と給与のランキングだけである、まったく異なる結果セットを返します。

    私のコメントは、あなたのデータに対してクエリを試すことを目的としていました。実際、機能とパフォーマンスの両方の観点から、実際に必要なものを決定する必要があります。



    1. ClusterControl CMON HA for Distributed Database High Availability-パート2(GUIアクセスセットアップ)

    2. mysqlは行を挿入するのに時間がかかりすぎます

    3. マテリアライズド・ビューが常に最新であることを確認するにはどうすればよいですか?

    4. NetBeansからリモートでjarをデバッグする方法