수식과 별칭으로 정렬하기
ORDER BY에서 별칭 참조가 허용되는 위치와 계산된 논리로 정렬하는 방법을 알아봅니다.
수식과 별칭으로 정렬하기은(는) CoddyKit의 무료 Coding Interview Prep 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Coding Interview Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Coding Interview Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
ORDER BY는 생각보다 유연합니다
놀랍게도 많은 지원자가 ORDER BY에서는 단순한 열만 참조할 수 있다고 생각합니다. 실제로는 식, 별칭, 열 위치, CASE 논리로 정렬할 수 있습니다.
면접관은 이것을 통해 논리적 쿼리 실행 순서를 이해하는지 확인합니다. ORDER BY는 SELECT 이후에 실행되므로, 바로 이 때문에 여기에서는 별칭이 작동하지만 WHERE에서는 작동하지 않습니다.
ORDER BY에서 별칭을 사용할 수 있는 이유
논리적 실행 순서를 떠올려 보십시오. FROM, WHERE, GROUP BY, HAVING, SELECT, 그리고 ORDER BY 순서입니다. SELECT가 ORDER BY보다 먼저 실행되므로, SELECT에서 정의한 열 별칭은 ORDER BY가 평가될 때 이미 존재합니다.
별칭이 ORDER BY에서는 작동하지만 WHERE에서는 실패하는 정확한 이유가 이것입니다. 면접관은 이 질문을 실행 순서와 연결해 묻기를 좋아합니다.
SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY annual_pay DESC;식 자체로 정렬하기
별칭을 사용하는 대신 전체 식을 ORDER BY에 다시 작성할 수도 있습니다. 두 방식 모두 유효하며 결과도 같습니다.
별칭을 사용하면 더 깔끔하고 논리를 반복하지 않아도 되지만, 명확성을 위해 일부 팀에서는 식을 직접 작성하는 방식을 선호합니다. 이유를 설명할 수 있다면 면접에서는 어느 쪽으로 답해도 괜찮습니다.
SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY salary * 12 DESC;열 위치(서수)로 정렬하기
SELECT 목록 항목의 서수 위치로 정렬할 수도 있습니다. ORDER BY 2는 두 번째로 선택한 열을 기준으로 정렬합니다. 간결하지만 취약한 방식입니다. SELECT 목록의 순서를 바꾸면 정렬 대상도 조용히 바뀌기 때문입니다.
면접 조언: 이 기능이 존재한다는 점과 가독성 및 안전성 때문에 일반적으로 실제 운영 코드에서는 권장되지 않는다는 점을 알아 두십시오.
SELECT name, hire_date
FROM employees
ORDER BY 2 DESC;계산된 CASE로 정렬하기
CASE 식으로 정렬하여 알파벳순이 아닌 사용자 지정 순서를 적용하는 강력한 패턴이 있습니다. 여기서는 계산된 우선순위를 사용해 급여가 높은 사람을 먼저 표시합니다.
CASE는 자체 열이 없는 정렬 순위를 만들어 냅니다. 엔진은 정렬을 위해서만 이 값을 평가합니다.
SELECT name, salary
FROM employees
ORDER BY CASE WHEN salary >= 100000 THEN 0 ELSE 1 END,
salary DESC;사용자 지정 범주형 정렬
상태 열은 알파벳순으로 정렬하면 의미가 맞지 않는 경우가 많습니다. "active, pending, closed"를 알파벳순으로 정렬하면 "active, closed, pending"이 되어 올바르지 않습니다. CASE는 각 값에 의도한 순위를 매핑합니다.
이는 보고서 작성에서 자주 발생하는 요구 사항이며, 자연 정렬을 넘어 정렬 순서를 제어할 수 있음을 보여 주는 깔끔한 방법입니다.
SELECT id, status
FROM orders
ORDER BY CASE status
WHEN 'active' THEN 1
WHEN 'pending' THEN 2
WHEN 'closed' THEN 3
ELSE 4
END;함수 결과로 정렬하기
어떤 스칼라 함수든 ORDER BY에서 사용할 수 있습니다. 예를 들어 LOWER로 대소문자를 구분하지 않고 정렬하거나, 문자열 길이 또는 날짜의 특정 부분을 기준으로 정렬할 수 있습니다.
참고: 정렬할 때 열을 함수로 감싸면 WHERE에서와 마찬가지로 엔진이 해당 열의 인덱스를 사용하지 못할 수 있습니다.
SELECT name
FROM employees
ORDER BY LOWER(name) ASC;GROUP BY 쿼리에서 별칭과 집계
그룹화된 쿼리에서는 집계 결과를 기준으로 정렬하는 경우가 많습니다. 다시 말해 SELECT가 먼저 실행되므로 ORDER BY에서 집계 결과의 별칭을 참조할 수 있습니다.
아래 쿼리는 고객별 주문 수를 세고, order_count라는 별칭을 사용해 그 수를 내림차순으로 정렬합니다.
SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id
ORDER BY order_count DESC;별칭 이름 충돌이라는 함정
면접관이 즐겨 내는 경계 사례가 있습니다. 별칭이 실제 열과 같은 이름이라면 어떻게 될까요? 대부분의 엔진은 ORDER BY에서 이름만 단독으로 작성하면 SELECT 목록의 별칭을 먼저 해석하므로 예상하지 못한 결과가 나올 수 있습니다.
salary * 2 AS salary로 별칭을 지정한 뒤 ORDER BY salary를 사용하면 기본 열이 아니라 두 배로 계산된 값을 기준으로 정렬합니다. 이런 모호성을 피하려면 열 이름을 별칭으로 재사용하지 마십시오.
SELECT salary * 2 AS salary
FROM employees
ORDER BY salary;식과 정렬 방향 조합하기
식, 별칭, 단순한 열을 하나의 절에서 모두 섞어 사용할 수 있으며, 각각에 고유한 정렬 방향을 지정할 수 있습니다. 이 예제에서는 계산된 보너스 등급을 내림차순으로 정렬한 다음, 동률 해소 기준으로 이름을 오름차순 정렬합니다.
이처럼 여러 키를 겹쳐 사용하는 방식은 실제 보고서 쿼리의 기본입니다.
SELECT name, salary,
salary * 0.1 AS bonus
FROM employees
ORDER BY bonus DESC, name ASC;이식성 관련 주의 사항
ORDER BY에서 식과 별칭을 사용하는 방식은 대부분의 데이터베이스에서 지원되지만, 면접에서는 다음 사항에 유의하십시오.
- 서수 위치(
ORDER BY 2)는 표준이지만 사용이 권장되지 않습니다. ORDER BY에서 별칭을 사용할 수 있는 범위는 주요 엔진에서 일관적이지만,WHERE/HAVING에서는 그렇지 않습니다.SELECT DISTINCT를 사용하면 제한이 생깁니다. SELECT 목록에 나타나는 식만ORDER BY에서 사용할 수 있습니다.
빠른 확인
별칭 가시성을 실행 순서와 연결해 보십시오.
복습
표현식과 별칭으로 정렬하기:
ORDER BY는 별칭, 원시 표현식, 함수,CASE논리, 서수 위치를 허용합니다.- 논리적 순서에서
ORDER BY가SELECT이후에 실행되기 때문에 별칭이 작동합니다. - 사용자 지정 범주형 정렬에는
CASE를 사용하십시오. - 모호성을 방지하려면 실제 열과 충돌하는 별칭 이름을 피하십시오.
- 정렬 키에 함수를 사용하면 인덱스 사용이 무효화될 수 있습니다.
자주 묻는 질문
“수식과 별칭으로 정렬하기” 강의는 무료인가요?
네 — “수식과 별칭으로 정렬하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Coding Interview Prep 강의 전체를 잠금 해제할 수 있습니다. Coding Interview Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
“수식과 별칭으로 정렬하기”에서 뭘 배우나요?
ORDER BY에서 별칭 참조가 허용되는 위치와 계산된 논리로 정렬하는 방법을 알아봅니다. 브라우저에서 직접 실행하는 실습 코드로 Coding Interview Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Coding Interview Prep을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Coding Interview Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“수식과 별칭으로 정렬하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Coding Interview Prep 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Coding Interview Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.