力ボタンmysql練習問題02(簡単)
4010 ワード
力ボタンmysql練習問題02(簡単)
2番目の最大数を検索しnullを返さなかった
## sql:
タイトル:
SQLクエリーを作成し、
±—±-------+ | Id | Salary | ±—±-------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | ±—±-------+
たとえば、上記の
±--------------------+ | SecondHighestSalary | ±--------------------+ | 200 | ±--------------------+
答え1:
このスレ主さんによると、これは最大数ではない最大数を探すためで、面白いと思いますが、これは最良解ではありません.ただ、分かりやすいと思います.
答え2:
limitを利用してこの方法を制限してN番目の高い給料を求めることに適用することができて、しかもデータが複雑であればあるほど、速度の優位性は明らかで、これは比較的に柔軟で、第任意の位置のデータを調べることができて、私はやはりこれが使いやすいと思います
2番目の最大数を検索しnullを返さなかった
## sql:
Create table If Not Exists Employee (Id int, Salary int)
Truncate table Employee
insert into Employee (Id, Salary) values ('1', '100')
insert into Employee (Id, Salary) values ('2', '200')
insert into Employee (Id, Salary) values ('3', '300')
タイトル:
SQLクエリーを作成し、
Employee
テーブルの2番目に高い給料(Salary)を取得します.±—±-------+ | Id | Salary | ±—±-------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | ±—±-------+
たとえば、上記の
Employee
表では、SQLクエリは、2番目に高い給料として200
を返す必要があります.2番目に高い給料が存在しない場合は、クエリはnull
を返します.±--------------------+ | SecondHighestSalary | ±--------------------+ | 200 | ±--------------------+
答え1:
select max(Salary) as SecondHighestSalary from Employee where Salary !=(select max(Salary) from Employee);
このスレ主さんによると、これは最大数ではない最大数を探すためで、面白いと思いますが、これは最良解ではありません.ただ、分かりやすいと思います.
答え2:
select
(select distinct salary from employee
order by salary desc limit 1,1)
as SecondHighestSalary
limitを利用してこの方法を制限してN番目の高い給料を求めることに適用することができて、しかもデータが複雑であればあるほど、速度の優位性は明らかで、これは比較的に柔軟で、第任意の位置のデータを調べることができて、私はやはりこれが使いやすいと思います