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

mysqlの各人の2番目に高い給与を取得します

    集計関数と自己結合を使用すると、

    のようなことができます。
    select a.*
    from demo a
    left join demo b on a.person_id = b.person_id
    group by a.person_id,a.salary
    having sum(a.salary < b.salary) = 1 /* 0 for highest 1 for second highest 2 for third and so on ... */
    

    またはsumで完全な大文字小文字の表現を使用する

    having sum(case when a.salary < b.salary then 1 else 0 end)  = 1
    

    デモ



    1. 陳記法

    2. 管理および監視用のOracleDatabase用の27個のoracledbaスクリプト

    3. 2つのエンティティ間の複数の関係、これは良い習慣ですか?

    4. キーワードを含む文字列を使用したPHPでのMySql全文検索