프로그래밍 PROGRAMMING/데이터베이스 DATABASE

[ORACLE] 오라클 정렬 순서를 지정하는 방법

매운할라피뇽 2021. 11. 12. 09:17
반응형

오라클 정렬순서를 지정하는 방법 제목

 

오라클에서 정렬 순서를 지정하기 위해서는 ORDER BY 구문을 사용하면 됩니다. 기본적인 ORDER BY 사용법은 아래와 같습니다.

 

  SELECT COL1, COL2 AS COL_NAME
    FROM TABLE_NAME
ORDER BY COL1 [ASC OR DESC], COL_NAME [ASC OR DESC]

 

위와 같이 SELECT 구문에 명시되어 있는 컬럼명들을 ORDER BY 구문에 나열하고 오름차순( ASC - 명시하지 않을 시에 기본 ) 혹은 내림차순 (DESC)을 입력하여 정렬 순서를 지정합니다. ORDER BY 에 나열되는 구문은 SELECT 문의 실행 결과에 보여지는 컬럼과 동일한 이름을 명시해야 합니다. 따라서 COL2의 별칭인 COL_NAME을 ORDER BY 절에 명시해야 오류가 나지 않습니다.

 

아래처럼 컬럼명을 지정하지 않고 리턴되는 컬럼의 순서를 지정하여 정렬을 지정하는 벙법도 있습니다. 이 경우 별칭과 상관없이 리턴되는 컬럼의 순서에 맞추어 정렬이 이루어집니다.

 

  SELECT COL1, COL2 AS COL_NAME
    FROM TABLE_NAME
ORDER BY 1 [ASC OR DESC], 2 [ASC OR DESC]

 

위 컬럼은 첫번째 컬럼과 동일하게 COL1 에 대한 정렬을 나타냅니다. 리턴되는 컬럼의 첫번째인 COL1을 기준으로 정렬이 지정되어 보여집니다.

 

아래는 위 구문을 사용한 예입니다. WITH 구문을 사용한 정렬 (참고) 에서 USER_KEY를 DESC 한 쿼리문과, 1 DESC 로 지정되어 정렬된 구문은 같은 결과를 출력합니다.

 

WITH TEST_NAME AS (
    SELECT 10021 AS USER_KEY, '김아무개' AS "이름" FROM DUAL UNION ALL
    SELECT 10022 AS USER_KEY, '박아무개' FROM DUAL UNION ALL
    SELECT 10023 AS USER_KEY, '이아무개' FROM DUAL UNION ALL
    SELECT 10024 AS USER_KEY, '유아무개' FROM DUAL UNION ALL
    SELECT 10025 AS USER_KEY, '최아무개' FROM DUAL UNION ALL
    SELECT 10026 AS USER_KEY, '박아무개' FROM DUAL UNION ALL
    SELECT 10027 AS USER_KEY, '이아무개' FROM DUAL UNION ALL
    SELECT 10028 AS USER_KEY, '김아무개' FROM DUAL UNION ALL
    SELECT 10029 AS USER_KEY, '박아무개' FROM DUAL UNION ALL
    SELECT 10030 AS USER_KEY, '최아무개' FROM DUAL UNION ALL
    SELECT 10031 AS USER_KEY, '임아무개' FROM DUAL
)
   SELECT USER_KEY, "이름"
     FROM TEST_NAME
  ORDER BY USER_KEY DESC

 

WITH TEST_NAME AS (
    SELECT 10021 AS USER_KEY, '김아무개' AS "이름" FROM DUAL UNION ALL
    SELECT 10022 AS USER_KEY, '박아무개' FROM DUAL UNION ALL
    SELECT 10023 AS USER_KEY, '이아무개' FROM DUAL UNION ALL
    SELECT 10024 AS USER_KEY, '유아무개' FROM DUAL UNION ALL
    SELECT 10025 AS USER_KEY, '최아무개' FROM DUAL UNION ALL
    SELECT 10026 AS USER_KEY, '박아무개' FROM DUAL UNION ALL
    SELECT 10027 AS USER_KEY, '이아무개' FROM DUAL UNION ALL
    SELECT 10028 AS USER_KEY, '김아무개' FROM DUAL UNION ALL
    SELECT 10029 AS USER_KEY, '박아무개' FROM DUAL UNION ALL
    SELECT 10030 AS USER_KEY, '최아무개' FROM DUAL UNION ALL
    SELECT 10031 AS USER_KEY, '임아무개' FROM DUAL
)
   SELECT USER_KEY, "이름"
     FROM TEST_NAME
  ORDER BY 1 DESC

 

위 쿼리를 실행하면 두 쿼리 결과 모두 아래의 결과를 리턴합니다. ORDER BY 구문에 명시된 USER_KEY 와 리턴되는 첫번째 컬럼인 USER_KEY 가 묵시적으로 정렬의 기준이 되어 아래처럼 USER_KEY로 DESC 이 된 형태로 결과값이 보여집니다. 

 

쿼리 실행 결과

 

 

반응형