정렬 ORDER BY

오름차순 : 작은 숫자부터... 데이터 올라감 ( 기본값 ) 

내림차순 : 큰 숫자부터... 데이터 내려감

 

SELECT * FROM CAR ORDER BY PRICE; --PRICE 오름차순

기본값은 오름차순이기 때문에 ORDER BY만 적으면 PRICE 기준으로 낮은 금액부터 정렬된다.

 

 

ASC : 오름차순 (ascend)

SELECT * FROM CAR ORDER BY PRICE ASC; --오름차순

 

ASC 입력하면 동일하게 오름차순으로 데이터가 정렬된다. ASC는 생략 가능하다.

알파벳 오름차순은 A부터 ABCD.... 올라간다.

 

 

 

DESC : 내림차순 (descend)

SELECT * FROM CAR ORDER BY PRICE DESC; --내림차순

내림차순은 반드시 DESC를 입력해주어야 한다. PRICE가 큰 금액부터 낮은금액까지 내림차순으로 정렬된다.

 

 

정렬 조건을 여러개 둘 수도 있다.

SELECT * FROM CAR ORDER BY MODEL_YEAR ASC, PRICE DESC;

YEAR 기준으로 오름차순, PRICE 기준으로 내림차순 정렬했다. 같은 연도일 때는 큰 금액부터 정렬된다.

 

 

GROUP BY, ORDER BY가 나오는 순서대로 그룹화가 된 다음에 정렬이 된다고 생각하면 된다.

SELECT MODEL_YEAR, AVG(PRICE), SUM(EA) FROM CAR GROUP BY MODEL_YEAR ORDER BY AVG(PRICE) DESC;

YEAR로 그룹화 해서 나온 데이터를 PRICE 평균값 내림차순으로 정렬했다.

 

 

ROWNUM : 행번호

ROWNUM -> ORDER BY

SELECT ROWNUM, CAR.* FROM CAR ORDER BY PRICE;

ROWNUM으로 행번호를 같이 조회하고 PRICE 기준으로 정렬했다. PRICE 기준으로 정렬은 잘 되었지만 행번호는 뒤죽박죽인 것을 볼 수 있다. SELECT로 행번호가 조회되고, ORDER BY로 마지막에 PRICE 기준으로 정렬이 되었기 때문이다. ROWNUM-> ORDER BY 순서였다.

 

 

 

ORDER BY -> ROWNUM

정렬후에 행번호를 주고 싶으면 ORDER BY -> ROWNUM 순서로 정렬을 먼저하고 ROWNUM을 조회해야 한다.

SELECT ROWNUM, A.* FROM
(SELECT *  FROM CAR ORDER BY PRICE DESC) A ;

(괄호) 안에서 먼저 ORDER BY로 정렬을 해준 뒤에 그것을 A로 지칭하였다. 그 다음 A와 ROWNUM을 SELECT로 조회했다. 정렬 후에 행번호가 순서대로 나오는 것을 확인할 수 있다.