SQL 코딩 테스트: ORDER BY · LIMIT 문제 모음

ORDER BY / LIMIT / TOP N / 다중 정렬 기준 — Level 1

Level 1 정렬 및 상위 N개 조회 유형 풀이 모음. 단일 정렬(ASC/DESC), 다중 정렬 기준(콤마 구분), LIMIT으로 상위 N개 제한, 동률(tie) 처리, 정렬 기준 컬럼 혼동 패턴 등.

Code Test
SQL
저자

Kwangmin Kim

공개

2026년 04월 08일

1 문제 1: 최근 대출 도서 TOP 3

1.1 문제 정보

항목 내용
출처 튜터 생성 (앵커: Programmers “상위 n개 레코드” Lv.1, 정답률 ~82%)
난이도 Level 1
SQL 유형 ORDER BY 다중 정렬, LIMIT

1.2 문제 설명

CREATE TABLE BOOK_LOAN (
    loan_id     INT PRIMARY KEY,
    book_title  VARCHAR(100),
    loan_date   DATE,
    return_date DATE
);

INSERT INTO BOOK_LOAN VALUES
(1, 'Educated',      '2024-04-01', '2024-04-14'),
(2, 'Dune',          '2024-03-10', '2024-03-24'),
(3, 'Me Before You', '2024-03-10', '2024-03-17'),
(4, 'The Alchemist', '2024-02-20', '2024-03-05'),
(5, 'Atomic Habits', '2024-01-15', '2024-01-29');

가장 최근에 대출된 도서 3권의 book_title, loan_date를 조회하라. - 정렬 기준 1: loan_date 내림차순 - 정렬 기준 2: 같은 날짜면 book_title 오름차순

기대 결과:

book_title loan_date
Educated 2024-04-01
Dune 2024-03-10
Me Before You 2024-03-10

1.3 최종 풀이

SELECT book_title, loan_date
FROM BOOK_LOAN
ORDER BY loan_date DESC, book_title ASC
LIMIT 3;
  • ORDER BY loan_date DESC, book_title ASC: 대출일 내림차순 → 동률 시 제목 오름차순
  • LIMIT 3: 상위 3행만 반환

1.4 Tips

  • 핵심 개념: ORDER BY 컬럼1 DESC, 컬럼2 ASC (다중 정렬 기준), LIMIT N
  • 함정: ORDER BY 다중 정렬은 쉼표(,)로 구분한다. AND, THEN, + 불가.
  • : 동률(tie) 처리를 문제에서 명시하지 않아도 2차 정렬 기준을 항상 고려하는 습관을 들인다.

2 문제 2: 연봉 상위 직원 조회

2.1 문제 정보

항목 내용
출처 튜터 생성 (앵커: Programmers “상위 n개 레코드” Lv.1, 정답률 ~89%)
난이도 Level 1
SQL 유형 ORDER BY DESC, 다중 정렬, LIMIT

2.2 문제 설명

CREATE TABLE employees (
    employee_id INT         PRIMARY KEY,
    name        VARCHAR(50) NOT NULL,
    department  VARCHAR(50) NOT NULL,
    salary      INT         NOT NULL,
    hire_date   DATE        NOT NULL
);

INSERT INTO employees VALUES
(1, '김철수', '개발',   8000000, '2019-03-15'),
(2, '이영희', '마케팅', 6000000, '2020-07-01'),
(3, '박민수', '개발',   9000000, '2021-01-20'),
(4, '최지은', '인사',   7000000, '2018-11-05'),
(5, '정현우', '개발',   8000000, '2020-04-10'),
(6, '강수진', '마케팅', 5500000, '2022-08-22');

급여 기준 상위 3명의 employee_id, name, department, salary를 조회하라. 급여가 같은 경우 입사일이 빠른 직원을 우선한다.

기대 결과:

employee_id name department salary
3 박민수 개발 9000000
1 김철수 개발 8000000
5 정현우 개발 8000000

2.3 최종 풀이

SELECT employee_id, name, department, salary
FROM employees
ORDER BY salary DESC,   -- 1차: 급여 내림차순
         hire_date ASC  -- 2차: 동점 시 먼저 입사한 직원
LIMIT 3;
  • ORDER BY salary DESC: 내림차순 명시 필수 (기본값 ASC = 오름차순)
  • hire_date ASC: “더 오래 근무” = 입사일이 이른 날짜 = 오름차순
  • 다중 정렬은 쉼표(,)로 구분 — AND 사용 시 문법 오류

2.4 Tips

  • 핵심 개념: ORDER BY 컬럼 DESC, 다중 정렬 쉼표 구분, LIMIT N
  • 함정 1: ORDER BY salary DESC AND hire_date ASC → 문법 오류. AND는 WHERE 연산자
  • 함정 2: ORDER BY salary (ASC 기본) → 급여 낮은 순, 하위 3명 반환
  • 함정 3: “빠른 입사 = 오랜 근무 = 오름차순(ASC)” — 방향을 반대로 쓰면 정반대 결과
  • : 결정적 결과를 보장하려면 정렬 컬럼 끝에 PK를 추가하는 습관을 들인다

3 문제 3: 주변기기 가격 정렬 조회

3.1 문제 정보

항목 내용
출처 튜터 생성 (앵커: Programmers “여러 기준으로 정렬하기” Lv.1, 정답률 ~85%)
난이도 Level 1
SQL 유형 ORDER BY 다중 정렬 (DESC + ASC), WHERE

3.2 문제 설명

CREATE TABLE products (
    product_id   INT PRIMARY KEY,
    product_name VARCHAR(100),
    category     VARCHAR(50),
    price        INT,
    stock        INT
);

INSERT INTO products VALUES
(1, 'Alpha Mouse',    '주변기기', 25000, 50),
(2, 'Mech Keyboard',  '주변기기', 85000, 30),
(3, 'Webcam Pro',     '주변기기', 45000, 20),
(4, 'USB Hub 4-port', '주변기기', 25000, 100),
(5, 'Monitor Arm',    '주변기기', 65000, 15),
(6, 'Mouse Pad XL',   '악세서리', 12000, 200);

카테고리가 ’주변기기’인 상품의 product_nameprice를 가격 내림차순으로 조회하라. 가격이 동일한 경우 상품명 오름차순으로 정렬한다.

기대 결과:

product_name price
Mech Keyboard 85000
Monitor Arm 65000
Webcam Pro 45000
Alpha Mouse 25000
USB Hub 4-port 25000

3.3 최종 풀이

SELECT product_name,
       price
FROM   products
WHERE  category = '주변기기'
ORDER BY price        DESC,
         product_name ASC;
  • ORDER BY price DESC: 1차 정렬 — 가격 내림차순
  • product_name ASC: 2차 정렬 — 동가격 시 이름 오름차순
  • 두 기준은 쉼표(,)로 구분. 각 기준에 방향(DESC/ASC)을 독립 지정

3.4 Tips

  • 핵심 개념: ORDER BY 컬럼1 DESC, 컬럼2 ASC — 다중 정렬, 쉼표 구분
  • 함정 1: ORDER BY price DESC AND product_name ASC → 문법 오류. AND는 WHERE 절 연산자
  • 함정 2: 동가격 행이 있을 때 2차 정렬 없이 ORDER BY price DESC만 쓰면 순서가 비결정적
  • : 정렬 결과를 결정적으로 만들려면 동점 처리 기준(2차 정렬)을 항상 명시한다

4 관련 문제

Subscribe

Enjoy this blog? Get notified of new posts by email: