본문 바로가기

IT

MSSQL | 두번째로 큰 연봉 - OFFSET ~ FETCH

 

 

leetcode의 problem의 database의 #176 Second Highest Salary 문제

https://leetcode.com/problemset/database/

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

이 문제의 정답은 MySQL로만 나와있다.

 

MySQL의 LIMIT OFFSET 을 MSSQLOFFSET FETCH를 통해 해결해본다.

SQL Server 2012부터 가능하다고 함

// MSSQL
SELECT ISNULL(
                ( SELECT DISTINCT Salary
                    FROM Employee
                   ORDER BY Salary DESC
                  OFFSET 1 ROWS
                   FETCH NEXT 1 ROWS ONLY ), NULL
              ) AS SecondHighestSalary

OFFSET은 ORDER BY와 함께 사용한다.

OFFSET 1 ROWS                --> 1행 건너뛰기

FETCH NEXT 1 ROWS ONLY --> 다음 한 행만 조회하기

 

 

ex. 봉급 5순위 부터 8순위까지 조회하시오.

SELECT Salary
  FROM Employee
 ORDER BY Salary DESC
OFFSET 4 ROWS
 FETCH NEXT 8 ROWS ONLY

 

 

 

※ 대충 데이터 넣어서 돌려보려고 SQL Fiddle 에서 테이블 생성하는데 잘 안 된다.

자꾸 아래와 같은 에러가 떠서 포기했다... 다른 사이트는 아예 mssql이 안 되고...

Unable to get host connection: Connections could not be acquired from the underlying database!

 

SSMS 깔자