【20200403】【毎日1つのアルゴリズム問題】2番目に高い給料(MySQL)
944 ワード
に質問
SQLクエリーを作成し、Employeeテーブルの2番目に高い給料(Salary)を取得します.
+----+----+|Id|Salary|+----+----+----+|1|100||2|200||3|300|+----+----+----++----など、上記のEmployee表のように、SQLクエリは200を2番目に高い給料として返すべきである.2番目に高い給料が存在しない場合は、クエリはnullを返します.
+---------------------+ | SecondHighestSalary | +---------------------+ | 200 | +---------------------+
構想とコード
インテリジェントポイント
1.ifnull(条件、null)は、条件が本当であれば、条件を返す.そうでなければnullを返します.
2. select ... as ...
3.limit:選択個数を制限する
4.offset:いくつかスキップしたことを示す
例:
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;