Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 네 번째로 높은 값 구하는 방법 – ORDER BY와 LIMIT OFFSET 활용법

MySQL에서 네 번째로 높은 값 조회하기

MySQL에서 테이블의 네 번째로 높은(큰) 값을 조회하려면 ORDER BY 절과 함께 LIMIT OFFSET을 사용하면 됩니다. 핵심 원리는 간단합니다. 값을 내림차순으로 정렬한 뒤, 앞의 3개 행을 건너뛰고(offset) 그 다음 1개 행만 가져오면(limit) 네 번째로 높은 값을 얻을 수 있습니다.

1. 테이블 생성

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
    Amount int
);
Query OK, 0 rows affected (0.88 sec)

2. 데이터 삽입

insert 명령어를 사용해 테이블에 샘플 데이터를 입력합니다.

mysql> insert into DemoTable values(980);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(670);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(890);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(995);
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable values(198);
Query OK, 1 row affected (0.10 sec)

3. 전체 데이터 확인

select 문으로 테이블에 저장된 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+--------+
| Amount |
+--------+
|    980 |
|    670 |
|    890 |
|    995 |
|    198 |
+--------+
5 rows in set (0.00 sec)

4. 네 번째로 높은 값 조회 쿼리

네 번째로 높은 값을 구하는 쿼리는 다음과 같습니다.

mysql> select *from DemoTable order by Amount desc limit 1 offset 3;

실행 결과:

+--------+
| Amount |
+--------+
|    670 |
+--------+
1 row in set (0.00 sec)

쿼리 동작 원리

위 쿼리가 동작하는 과정을 단계별로 살펴보겠습니다.

  • ORDER BY Amount DESC : Amount 열을 기준으로 내림차순 정렬합니다. 정렬 순서는 995 → 980 → 890 → 670 → 198입니다.
  • OFFSET 3 : 정렬된 결과에서 앞의 3개 행(995, 980, 890)을 건너뜁니다.
  • LIMIT 1 : 건너뛴 후 남은 행 중 첫 번째 행, 즉 네 번째로 높은 값인 670 하나만 반환합니다.

이 방식을 응용하면 LIMIT과 OFFSET의 숫자만 조정해서 두 번째, 세 번째 등 N번째로 높은 값도 손쉽게 조회할 수 있습니다. 예를 들어 세 번째로 높은 값은 limit 1 offset 2, 다섯 번째로 높은 값은 limit 1 offset 4를 사용하면 됩니다.