본문 바로가기
핵심 기술 튜토리얼 (Core Tech Tutorials)

SQL 데이터 정렬과 필터링: ORDER BY, DISTINCT, LIMIT 3총사 완벽 정리

by 데이터비전 2025. 6. 10.

안녕하세요, 데이터로 비전을 찾는 '데이터비전 연구소'의 데이터비전입니다.

 

지난 포스팅 [SQL 기초 #2: 무료 DB툴 DBeaver 설치 및 연결 방법]을 통해, 우리는 데이터베이스와 대화할 수 있는 '대화 창구'를 성공적으로 마련했습니다. `SELECT * FROM Artist;` 쿼리를 날려 첫 대화도 나눠봤죠.

 

그렇다면 이런 질문이 자연스럽게 생깁니다.

 

"알겠습니다. 데이터를 조회했는데, 왜 결과가 제멋대로 뒤죽박죽으로 나오죠?"

 

맞습니다. SQL은 우리가 특별히 명령하지 않으면 데이터를 그냥 있는 그대로, 순서 없이 가져다줄 뿐입니다. 마치 창고에서 물건을 잔뜩 꺼내 왔지만, 아직 정리정돈이 안 된 상태와 같죠. 똑같은 물건이 여러 개 섞여 있거나, 너무 많아서 뭐가 뭔지 알 수 없기도 합니다.

 

오늘 이 글에서는 이 지저분한 데이터를 깔끔하게 정리하는 세 가지 강력한 도구, ORDER BY, DISTINCT, LIMIT에 대해 A to Z, 하나하나 떠먹여 드리겠습니다. 이 글만 따라 하시면, 여러분도 데이터를 '내 마음대로' 제어하는 첫걸음을 뗄 수 있습니다.

 

SQL 데이터 정렬과 필터링: ORDER BY, DISTINCT, LIMIT


1. 원하는 순서대로! 데이터 정렬의 기본, ORDER BY

가장 먼저 배울 것은 정렬입니다. ORDER BY는 특정 컬럼을 기준으로 데이터의 순서를 정렬해주는, 아주 정직하고 강력한 명령어입니다.

 

예를 들어, 직원들의 연봉(salary)이 낮은 순서대로 보고 싶다면 쿼리 맨 마지막에 `ORDER BY salary`를 붙여주면 됩니다.

-- 연봉(salary)을 기준으로 오름차순 정렬
SELECT * FROM employees ORDER BY salary;

 

❗ Tip: 오름차순(ASC)과 내림차순(DESC)
기본적으로 ORDER BY는 오름차순(점점 커지는 순서, ASC)으로 동작합니다. 만약 연봉을 높은 순서, 즉 내림차순(점점 작아지는 순서)으로 보고 싶다면 기준 컬럼 뒤에 DESC라고 명시해주어야 합니다.

-- 연봉(salary)을 기준으로 내림차순 정렬
SELECT name, salary FROM employees ORDER BY salary DESC;

 

여러 기준으로도 정렬할 수 있습니다. '부서별로 먼저 정렬하고, 같은 부서 내에서는 연봉 높은 순서'로 보고 싶다면 쉼표(,)로 이어주면 됩니다.

-- 부서(오름차순), 연봉(내림차순) 순으로 다중 정렬
SELECT name, department, salary
FROM employees
ORDER BY department, salary DESC;

2. 중복은 이제 그만! 고유한 값만 골라보기, DISTINCT

다음은 DISTINCT입니다. 우리 회사에 어떤 부서들이 있는지 '종류'만 궁금할 때, 그냥 `SELECT department FROM employees;` 라고 조회하면 '개발팀', '기획팀', '개발팀'... 처럼 중복된 값이 모두 나옵니다.

 

이때 SELECT 바로 뒤에 DISTINCT를 붙여주면, 이 모든 중복을 제거하고 고유한 값만 딱 보여줍니다.

-- 중복을 제거하고 부서의 종류만 보기
SELECT DISTINCT department FROM employees;

 

결과로 '개발팀', '기획팀', '마케팅팀' 세 가지만 깔끔하게 나오는 것을 확인할 수 있습니다. 데이터의 종류를 파악할 때 아주 유용하겠죠?


3. 필요한 만큼만! 데이터 개수 제한하기, LIMIT

마지막으로 배울 LIMIT은 조회할 데이터의 개수를 제한하는 기능입니다. 데이터가 700만 건일 때 전부 조회하면 큰일 나겠죠? "일단 상위 5개만 먼저 보자" 와 같이 데이터의 일부만 확인할 때 사용합니다.

 

연봉이 가장 높은 상위 3명의 데이터만 보고 싶다면 어떻게 할까요? 먼저 `ORDER BY`로 연봉을 내림차순 정렬한 뒤, `LIMIT`으로 3개만 끊어주면 됩니다.

 

-- 연봉 TOP 3 직원 조회
SELECT name, department, salary
FROM employees
ORDER BY salary DESC
LIMIT 3;

 

이처럼 ORDER BYLIMIT을 함께 사용하면 'TOP N' 분석을 아주 쉽게 할 수 있습니다.


마무리하며: 이제 당신도 데이터를 '요리'할 준비가 되었습니다

오늘은 데이터 분석의 실질적인 다음 단계, ORDER BY, DISTINCT, LIMIT을 함께했습니다. 처음에는 낯선 명령어에 조금 당황하셨을 수도 있지만, 막상 해보니 생각보다 간단하지 않으셨나요?

 

이제 여러분은 데이터를 단순히 조회하는 것을 넘어, 원하는 순서로 정렬하고, 중복을 제거하며, 필요한 만큼만 골라보는 능력까지 갖추게 되었습니다. 데이터라는 재료를 내 입맛에 맞게 '요리'할 준비를 마친 셈이죠.

 

그런데 여기서 진짜 궁금증이 시작됩니다.

 

"데이터를 예쁘게 정리했는데, 그래서 이걸로 '계산'은 어떻게 하죠? 전체 직원은 몇 명이고, 평균 연봉은 얼마인가요?"

다음 포스팅에서는 이 모든 질문에 답을 해주는, 데이터를 요약하는 마법 같은 도구 집계함수(Aggregate Function)에 대해 본격적으로 탐험해 보겠습니다. 데이터 분석이 정말로 재밌어지는 순간을 경험하게 될 테니, 절대 놓치지 마세요!

 

오늘 배운 정렬과 필터링 관련해서 궁금한 점이 있으셨나요? 댓글로 남겨주시면 연구소장이 직접 답변해 드리겠습니다!