https://leetcode.com/problems/second-highest-salary/
해석
1
2
3
|
Write an SQL query to report the second highest salary from the Employee table.
If there is no second highest salary, the query should report null.
The query result format is in the following example.
|
cs |
두 번째로 높은 임금을 구하여라. 그러나 두 번째 높은 값이 없을 경우에는 null을 출력하라
풀이
SELECT MAX(Salary) AS SecondHighestSalary
FROM Employee
WHERE Salary != (
SELECT MAX(Salary)
FROM Employee
)
|
cs |
As는 쿼리 안의 테이블이나 서브쿼리에 이름을 지정해 줍니다.
Input:
Employee table:
+----+--------+
| id | salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
Output:
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+
|
cs |
Output을 보면 SecondHighestSalary로 이름이 주어졌으니 As를 사용하여 이름을 지정해 줍니다.
FROM 문은 SELECT문에서 참조할 테이블을 지정합니다.
Employee table을 사용해야 하니 FROM Employee 를 작성해 줍시다
WHERE는 다른 프로그래밍 언어의 If문과 닮아 있습니다. 조건을 명시하기 때문이죠
조건을 읽어보면 Saraly가 무언가와 다를 때 라고 합니다. WHERE Salary !=
그 무언가가 무엇일까요?
서브트리는 하나의 SQL 쿼리 안에 있는 SQL 쿼리입니다. 메인트리에 종속되어 있는 트리입니다.
서브트리를 읽어보면 Employee 테이블에 있는 최대 Salary를 나타내는 군요.
WHERE Salary != (
SELECT MAX(Salary)
FROM Employee
)
|
cs |
그러면 WHERE는 (메인트리의) Salary가 (서브트리의) 최대 Salary가 아닐 때라고 하네요.
그리고 맨 위의 코드를 읽어보면
SELECT MAX(Salary) AS SecondHighestSalary
최대 Salary를 구하라고 합니다. 그렇다면 전체에서 최대 Salary를 제외한 차대 Salary를 구하게 되겠죠
'Leetcode' 카테고리의 다른 글
leetcode Reverse Integer (0) | 2022.05.29 |
---|---|
Add Two Numbers leetcode 2 (0) | 2022.05.29 |
[MySQL] 175. Combine Two Tables [LeetCode Easy] (0) | 2022.05.25 |
[MySQL] 3. 175. Combine Two Tables [LeetCode Easy] (0) | 2022.05.25 |
[LeetCode Medium] 3. Longest Substring Without Repeating Characters [C/C++] (0) | 2022.05.25 |