본문 바로가기
Database/엑셀로 배우는 SQL 실무 - 입문

[SQL] 엑셀로 배우는 SQL - 정렬 (ORDER BY ASC, DESC)

by 따라쟁이개발자 2023. 1. 8.

엑셀에서 필터와 함께 자주 쓰이는 기능 중 하나가 바로 정렬인데요

정렬은 오름차순, 내림차순 선택 가능하고 

하나의 항목만 기준으로 정렬할 수도, 여러 개의 항목을 기준으로 정렬할 수도 있습니다!

 

SQL도 ORDER BY절을 통해 정렬 기능을 구현할 수 있습니다.

 

 

엑셀로 먼저 살펴보기

아래와 같은 엑셀이 있다고 가정하고, 정렬 조건을 적용해 볼게요

 

1. 재고를 오름차순으로 정렬

 

2. 재고를 내림차순으로 정렬

 

3. 음료종류를 오름차순, 가격을 내림차순으로 정렬

 

 

SQL로 살펴보기

SQL에서는 정렬 기능을 구현하기 위해 ORDER BY절을 사용합니다.

이제까지는 SELECT절이나 WEHRE절 안에서 해결했었는데 ORDER BY절이라니 이건 또 뭘까, 좀 생소하죠?

 

우선, 이번에도 엑셀 예시와 동일한 Table이 있다고 가정하고 SQL로 동일한 결과를 만들어 보겠습니다.

 

 

정렬 (ORDER BY)

ORDER BY절은 Table을 정렬할 때 사용하고, SELECT문 가장 하단에 두고 사용합니다.

초반 게시물인 '[SQL] 엑셀로 배우는 SQL - SELECT문, 읽는 순서, Alias(별칭)'에서 읽는 순서 설명할 때 잠깐 다뤘었는데요.

(자세한 내용은 링크 참고 - https://bnmdeveloper.tistory.com/19)

 

위 게시물 내용에서 정리한 것처럼, ORDER BY절은 SELECT문에서 가장 마지막에 읽히는 절입니다.

SELECT문으로 출력한 데이터를 마지막에 싹 정렬해준다는 느낌으로 이해하시면 될 것 같아요.

 

ORDER BY절은 뒤에 column + ASC/DESC를 나열하는 방식으로 사용됩니다.

ASC는 오름차순, DESC는 내림차순을 의미하며 만약 아무것도 명시하지 않을 경우 기본값인 ASC로 적용되게 됩니다.

 

ORDER BY a ASCa column을 기준으로 데이터 오름차순 정렬이라는 의미이고

ORDER BY a도 마찬가지로 a column을 기준으로 데이터 오름차순 정렬이라는 의미입니다.

ODER BY a ASC, b DESCa, b column을 기준으로 우선 a 기준 오름차순 정렬 후 b 기준 내림차순 정렬이라는 의미입니다.

 

 

아래는 stock 항목을 오름차순 한 결과입니다.

SELECT *
FROM beverage_stock
ORDER BY stock ASC;  -- 또는 ORDER BY stock

 

아래는 stock 항목을 내림차순한 결과입니다.

SELECT *
FROM beverage_stock
ORDER BY stock DESC;

 

아래는 type 항목을 오름차순 한 후, stock 항목을 내림차순 한 결과입니다.

SELECT *
FROM beverage_stock
ORDER BY type ASC, stock DESC;

 

 

Alias, Column 순서를 사용하여 정렬

앞서 SELECT 문 실행 순서를 다루던 게시물에서 ORDER BY절은 SELECT절 다음에 읽히기 때문

SELECT절에서 사용되는 Alias를 그대로 받아 사용할 수 있다고 했었습니다.

 

아래와 같이 stock 대신 beverageStock 이라는 Alias를 써도 잘 정렬이 되는 것을 볼 수 있죠

SELECT  name
      , stock AS beverageStock
FROM beverage_stock
ORDER BY beverageStock DESC;

 

Alias 외에도 ORDER BY절에선 column 순서를 사용해 정렬시킬 수도 있습니다.

아래 쿼리에서 stock은 5번째 항목이니 ORDER BY 5 DESC로 정렬시킬 수 있죠

ORDER BY 절은 따지고 보면, 정렬이라는 부수적인 기능인데 매번 column명을 일일이 쓰기엔 좀 귀찮은 감이 있죠.

그럴 때 column명 대신 column 순서를 사용하는 것도 좋은 방법입니다. (column이 많지 않은 선에서요 :-)

SELECT  *
FROM beverage_stock
ORDER BY 5 DESC;

 

 

정리

SELECT문의 마무리인 ORDER BY절까지 다뤄봤습니다.

사실, SELECT문에서는 배울 것들이 훨씬 많은데요. 그룹함수라던지 서브쿼리라던지 CASE문이라던지..

 

하지만, 이 모든 것을 다루면 입문용이라고 말하기 힘들어질 것 같아요 

이번 시리즈는 엑셀과 비교해보며 SQL에 쉽게 접근해보기가 목적이기 때문에 SELECT문은 이 정도로 마무리 하겠습니다.

 

이제까지 게시물들에서 많은 실습 예제들을 다뤘었는데요

하나 놓치고 간 게 있죠, 바로 beverage_stock Table을 만드는 법과 Table에 데이터를 넣는 법입니다.

 

초반에 아주 잠깐 스쳐가며 다루긴 했는데 조금 더 보강이 필요할 것 같아요.

그럼 다음 장에선 CREATE문으로 Table 만드는 법부터 다뤄 보겠습니다. 🙂

 

 

[ 참고 ]

 MySQL로 배우는 데이터베이스 개론과 실습

 SQL 개발자 이론서 + 기출문제

댓글