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

MySQLテーブルで2番目に高い値を取得します

    これがネクタイを説明するものです。

    Name    Salary
    Jim       6
    Foo       5
    Bar       5
    Steve     4
    
    SELECT name, salary
    FROM employees
    WHERE salary = (SELECT MAX(salary) FROM employees WHERE salary < (SELECT MAX(salary) FROM employees))
    
    Result --> Bar 5, Foo 5
    

    編集: Manojの2番目の投稿を取り上げ、それを微調整して、もう少し人間が読めるようにしました。私にとってn-1 直感的ではありません。ただし、必要な値を使用すると、2 =2、3=3などになります。

    /* looking for 2nd highest salary -- notice the '=2' */
    SELECT name,salary FROM employees
    WHERE salary = (SELECT DISTINCT(salary) FROM employees as e1
    WHERE (SELECT COUNT(DISTINCT(salary))=2 FROM employees as e2
    WHERE e1.salary <= e2.salary)) ORDER BY name
    
    Result --> Bar 5, Foo 5
    


    1. DATE_SUB()と日時計算に算術演算子を使用することの間に違いはありますか?

    2. Mysql int(11)番号が範囲外です

    3. MySQLでユーザーを作成する

    4. max_allowed_pa​​cketmysql変数を確認および設定する方法