본문 바로가기
데이터분석

[SQL 기본] ORDER BY와 별칭(ALIAS)

by 규랃 2024. 1. 22.
728x90
반응형

데이터를 다루다 보면 결괏값을 일자 순, 매출액 역순 등 다양한 순서로 정렬해야 할 때가 있습니다. 엑셀에서도 정렬기능은 정말 많이 사용하는 기능 중 하나입니다. SQL에서도 정렬기능을 수행하는 구문이 있는데요. 그것이 바로 ORDER BY입니다.

 

ORDER BY는 구문 이름에서도 확인할 수 있는 것처럼 ORDERING(정렬)하고자 하는 값을 옆에 써주게 되면 해당 값을 기준으로 정렬이 이루어지는데요. 보통은 SELECT 절에서 정의한 컬럼 중 내가 정렬하고자 하는 값을 써주게 됩니다. 물론 SELECT 절에 정의하지 않은 값들을 ORDER BY에 써주는 것도 가능하지만 대부분의 경우에는 SELECT 절의 있는 값들을 활용한다고 생각하면 됩니다.

 

그럼 역시나 이해하기 쉽도록 지난번에 작성해 본 내용으로 간단한 예를 들어보겠습니다. 요청사항은 다음과 같습니다.

- 요청사항: 일자별 필기구 구매수를 날짜 순으로 정렬해 주세요.

SELECT 구매일자, COUNT(*)
FROM 필통
GROUP BY 구매일자
ORDER BY 구매일자 ASC

 

이제 이 정도의 쿼리는 익숙해지셨죠? 그런데 ORDER 구매일자 옆에 있는 ASC는 무엇일까요? 이것은 오름차순의 약자로 오름차순을 하겠다는 의미입니다. 그럼 반대로 내림차순도 할 수 있을까요? 물론입니다. 내림차순은 내림차순의 약자인 DESC를 지정해 준다면 지정한 컬럼값의 내림차순으로 값을 출력할 수 있습니다. ORDER BY는 기본설정이 오름차순이기 때문에 ASC 키워드는 굳이 작성하지 않아도 되지만 내림차순의 경우 DESC 키워드를 꼭 입력해야 합니다.  

 

  • 오름차순 시 
SELECT 구매일자, COUNT(*)
FROM 필통
GROUP BY 구매일자
ORDER BY 구매일자

 

  • 내림차순 시
SELECT 구매일자, COUNT(*)
FROM 필통
GROUP BY 구매일자
ORDER BY 구매일자 DESC

 

자 그럼 다음 요청사항을 해결해 볼까요? 

  • 요청사항: 일자별 필기구 구매를 많이 한 날을 알고 싶습니다. 일자별 필기구 구매금액을 구매금액 역순으로 정렬해 주세요.
SELECT 구매일자, SUM(가격)
FROM 필통
GROUP BY 구매일자
ORDER BY SUM(가격) DESC

 

우리가 배운 대로라면 위와 같이 쿼리를 작성할 수 있습니다만, 쿼리도 결괏값도 깔끔하지 않아 보입니다. 그럴 때 활용하는 것이 별칭(ALIAS)입니다. 

 

Alias는 별칭으로 특히 조회컬럼이 함수인 경우 간략하게 이름을 대체하여 표시할 수 있는 키워드입니다. Alias를 사용할 때는 as라는 키워드를 사용해서 별칭을 지정해 줄 수 있습니다. 

SELECT 구매일자, SUM(가격) as 구매금액
FROM 필통
GROUP BY 구매일자
ORDER BY 구매금액 DESC

 

이렇게 SELECT 절에서 지정한 별칭은 ORDER BY절에서도 그대로 사용할 수 있기 때문에 훨씬 깔끔한 쿼리작성과 결괏값을 얻을 수 있습니다. 

 

  • Alias 사용하지 않았을때
구매일자 _col1
2024-01-01 3,700
2023-12-01 3,300

 

  • Alias를 사용했을 때
구매일자 구매금액
2024-01-01 3,700
2023-12-01 3,300

 

이걸로써 SQL의 기본 중의 기본이라고 할 수 있는 내용들이 마무리가 되었습니다. 다음 글에서는 SQL의 꽃이라고 할 수 있는 JOIN에 대해 다뤄보려고 합니다. JOIN을 통해 우리는 한단계 더 성장한 쿼리를 다룰 수 있으니 많은 관심 부탁드립니다.

 

함께 성장해요.

728x90
반응형