SQLを用いて「2番目に大きい値を取得しよ」との問題に一瞬戸惑ったので自分用にメモ。
(問題はLeetCodeより https://leetcode.com/problems/second-highest-salary/description/?envType=study-plan-v2&envId=top-sql-50)
Q1. 下記のテーブルから2番目に高い給与(salary)を取得し、カラム名はSecondHighestSalaryとせよ。
+----+--------+
| id | salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
2番目に大きい(もしくは小さい)値を取得するのにいくつか方法があったので記します。
- 方法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 offset 1)
AS SecondHighestSalary;