내림차순 정렬 후 LIMIT 오프셋, 개수를 사용하면 N번째로 큰 값을 쉽게 찾을 수 있습니다.
테이블 생성 및 데이터 삽입
mysql> CREATE TABLE DemoTable (
-> Value INT
-> );
Query OK, 0 rows affected (0.59 sec)
mysql> INSERT INTO DemoTable VALUES(40); Query OK, 1 row affected (0.26 sec) mysql> INSERT INTO DemoTable VALUES(60); Query OK, 1 row affected (0.09 sec) mysql> INSERT INTO DemoTable VALUES(45); Query OK, 1 row affected (0.11 sec) mysql> INSERT INTO DemoTable VALUES(85); Query OK, 1 row affected (0.12 sec) mysql> INSERT INTO DemoTable VALUES(78); Query OK, 1 row affected (0.10 sec)
데이터 조회
mysql> SELECT * FROM DemoTable;
+-------+ | Value | +-------+ | 40 | | 60 | | 45 | | 85 | | 78 | +-------+ 5 rows in set (0.00 sec)
3번째로 큰 값 찾기 (N=3 → 오프셋 2, 개수 1)
mysql> SELECT * FROM DemoTable ORDER BY Value DESC LIMIT 2, 1;
+-------+ | Value | +-------+ | 60 | +-------+ 1 row in set (0.00 sec)
원리: ORDER BY Value DESC로 큰 값부터 정렬하면 (85, 78, 60, 45, 40). LIMIT 2, 1은 "2개 건너뛰고 1개 가져오기" 즉, 3번째 값(60)을 의미합니다. N번째 최댓값이면 LIMIT N-1, 1입니다.