SQL에서 TOP 명령어 사용법
데이터베이스에서 데이터를 조회할 때, 특정 수의 행만 조회하고 싶은 경우가 있습니다. 이때 유용하게 사용할 수 있는 명령어가 `TOP`입니다. 이번 글에서는 SQL의 `TOP` 명령어에 대해 자세히 알아보고, 다양한 예제를 통해 사용법을 살펴보겠습니다.
TOP 명령어 기본 사용법
`TOP` 명령어는 조회 결과에서 상위 몇 개의 행만 선택하는 데 사용됩니다. 기본적인 문법은 다음과 같습니다:
SELECT TOP (n) 열1, 열2, ...
FROM 테이블명
ORDER BY 열;
- `n`: 반환할 행의 개수입니다.
예제
`employees` 테이블에서 상위 3명의 직원 정보를 조회하고자 할 때, 다음과 같이 작성할 수 있습니다:
SELECT TOP (3) name, age, department
FROM employees
ORDER BY age DESC;
결과
name | age | department |
David | 40 | IT |
Charlie | 35 | Sales |
Alice | 30 | HR |
위 쿼리는 `age`를 기준으로 내림차순 정렬한 후, 상위 3명의 직원 정보를 반환합니다.
PERCENT 옵션 사용
`TOP` 명령어는 `PERCENT` 옵션과 함께 사용할 수 있습니다. 이 옵션을 사용하면 전체 행의 특정 비율만큼을 선택할 수 있습니다.
예제
`employees` 테이블에서 상위 50%의 직원 정보를 조회하고자 할 때, 다음과 같이 작성할 수 있습니다:
SELECT TOP (50) PERCENT name, age, department
FROM employees
ORDER BY age DESC;
이 쿼리는 `age`를 기준으로 내림차순 정렬한 후, 상위 50%의 직원 정보를 반환합니다.
WITH TIES 옵션 사용
`TOP` 명령어는 `WITH TIES` 옵션과 함께 사용할 수 있습니다. 이 옵션을 사용하면 마지막으로 선택된 행과 동일한 값을 가진 추가 행도 함께 반환합니다.
예제
`employees` 테이블에서 상위 2명의 직원 정보를 조회하되, 동일한 나이를 가진 직원도 포함하고자 할 때, 다음과 같이 작성할 수 있습니다. 단 WITE TIES를 사용할 때에는 ORDER BY 절이 꼭 함께 사용되어야 합니다. 동일한 데이터를 정렬하는 기준으로 사용됩니다.
SELECT TOP (2) WITH TIES name, age, department
FROM employees
ORDER BY age DESC;
name |
age | department |
David | 40 | IT |
Charlie | 35 | Sales |
Eve | 35 | IT |
이 쿼리는 `age`를 기준으로 내림차순 정렬한 후, 상위 2명의 직원 정보와 함께 동일한 나이를 가진 직원도 포함하여 반환합니다.
특정 데이터베이스에서의 사용법
`TOP` 명령어는 Microsoft SQL Server에서 주로 사용됩니다. 다른 데이터베이스에서는 동일한 기능을 제공하는 다른 명령어를 사용합니다.
MySQL: `LIMIT` 명령어를 사용합니다.
PostgreSQL: `LIMIT` 명령어를 사용합니다.
Oracle: `ROWNUM` 또는 `FETCH FIRST` 명령어를 사용합니다.
MySQL 예제
MySQL에서 `LIMIT` 명령어를 사용하여 상위 3명의 직원 정보를 조회하고자 할 때:
SELECT name, age, department
FROM employees
ORDER BY age DESC
LIMIT 3;
PostgreSQL 예제
PostgreSQL에서 `LIMIT` 명령어를 사용하여 상위 3명의 직원 정보를 조회하고자 할 때
SELECT name, age, department
FROM employees
ORDER BY age DESC
LIMIT 3;
'Programming' 카테고리의 다른 글
PATH, 환경변수 추가 - 리눅스 (0) | 2024.06.04 |
---|---|
WSL에서 psycopg2 설치 시 에러 정리 (2) | 2024.06.03 |
SQL에서 중복을 제거하고 데이터를 조회 (0) | 2024.05.31 |
SQL 정렬 명령을 이용한 데이터 정렬 (0) | 2024.05.31 |
Next.js 개발환경 구축하기 (0) | 2024.05.28 |