https://leetcode.com/problems/second-highest-salary/
문제를 해석 하자면 두 번째로 높은 임금을 구하여라. 그러나 두 번째 높은 값이 없을 경우에는 null을 출력하라라는 뜻입니다.
그러나 문제를 풀 것은 아니고, 이 문제로 WHERE과 SubQuery를 배워봅시다.
일단 아래의 코드가 위에 링크 문제의 답입니다.
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를 구하게 되겠죠
ㄴ
'그 밖의 방법들' 카테고리의 다른 글
백준 10814 나이순 정렬, 안정 정렬 (0) | 2022.06.02 |
---|---|
[nodeJS] 백준 17433: 신비로운 수 (0) | 2022.05.27 |
빠른 입출력 [node JS] 백준 15552번 - 빠른 A+B, 최대한 다양하게 (0) | 2022.05.25 |
빠른 입출력 [C#] 백준 15552번 - 빠른 A+B, 최대한 다양하게 (0) | 2022.05.25 |
빠른 입출력 [C/C++] 백준 15552번 - 빠른 A+B, 최대한 다양하게 (1) | 2022.05.25 |