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

可能な限り2番目に高い給与の最良の方法を見つける

    この質問は主に、面接時に、新入生または1年の経験を持つ候補者からの質問です。私からのこの質問でさえ、私がWeb開発の分野でやってきたときかもしれません。

    そこで、2番目またはn番目に高い給与を見つけるためのいくつかの可能な方法を紹介します。


    Expの場合:従業員テーブル(ET)

    EID 従業員名 給与
    1 従業員-1 20,000
    2 従業員-2 22,000
    3 従業員-3 21,000
    4 従業員-4 19,000
    5 従業員-5 21,000

    1:-n番目に高い給与を見つける方法条件なし
    この場合、SQLの非常に基本的な制限と最大の方法を使用できます

    SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT n-1,1

    ここで、nは探している位置です
    n=2の場合クエリは次のようになります

    SELECT DISTINCT(state_id) FROM crm_cities ORDER BY state_id DESC LIMIT 1,1

    出力は次のようになります:21,000

    2:-条件が2番目に高い給与の従業員をすべて見つける必要がある場合にn番目に高い給与をすべて見つける方法。
    この場合、SQLのサブクエリ機能を使用できます。

    SELECT Salary FROM ET WHERE Salary = (SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT n-1,1)

    ここで、nは探している位置です
    n=2の場合クエリは次のようになります

    SELECT Salary FROM ET WHERE Salary = (SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT 1,1)

    出力は次のようになります:21,000、21,000

    3:-LIMIT条件を使用せずに2番目に高い給与を見つける方法。
    この場合、SQLでNOTIN条件を使用できます

    SELECT MAX(Salary) FROM ET
    WHERE Salary NOT IN (SELECT MAX(Salary) FROM ET)

    出力は次のようになります:21,000

    4:-LIMITとサブクエリを使用せずに2番目に高い給与を見つける方法
    この場合、自己結合方式を使用できます

    SELECT MAX( E1.Salary ) FROM ET E1, ET E2 WHERE E1.Salary < E2.Salary
    Output will be: 21,000

    これがあなたの必要に応じて正しい答えを見つけるのに役立つことを願っています..🙂

    この投稿が気に入った場合は、MyPublicNotebookを購読してさらに便利なものを入手することを忘れないでください。


    1. MySQLWorkbenchを使用したビジュアルデータベースの作成

    2. MySQLでデフォルトの制約を追加する方法

    3. Entity Framework 7データベース-最初のPOCOジェネレーターはありますか?

    4. SQL:フルネームフィールドから名、ミドルネーム、ラストネームを解析します