【20200403】【毎日1つのアルゴリズム問題】2番目に高い給料(MySQL)


に質問
SQLクエリーを作成し、Employeeテーブルの2番目に高い給料(Salary)を取得します.
+----+----+|Id|Salary|+----+----+----+|1|100||2|200||3|300|+----+----+----++----など、上記のEmployee表のように、SQLクエリは200を2番目に高い給料として返すべきである.2番目に高い給料が存在しない場合は、クエリはnullを返します.
+---------------------+ | SecondHighestSalary | +---------------------+ | 200                 | +---------------------+
構想とコード
select 
    ifnull(
        (select distinct Salary from Employee order by Salary desc limit 1 offset 1), 
        null)
        as SecondHighestSalary

インテリジェントポイント
1.ifnull(条件、null)は、条件が本当であれば、条件を返す.そうでなければnullを返します.
2. select ... as ...
3.limit:選択個数を制限する
4.offset:いくつかスキップしたことを示す
例:
#     select   2
select * from tableA limit 2; 

#            
select * from tableA offset 2;

#     2 ,       ,       1
select * from tableA limit 2, 1;

#       ,       ,       2
select * from tableA limit 2 offset 1;