정렬 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로 조회했다. 정렬 후에 행번호가 순서대로 나오는 것을 확인할 수 있다.
'DBMS > Oracle' 카테고리의 다른 글
외래키 (Foreign Key) - 부모테이블, 자식테이블 / CASCADE (0) | 2022.05.20 |
---|---|
조인 JOIN : 내부조인(동일조인, 자연조인, 교차조인) / 외부조인(+) : LEFT, RIGHT (2) | 2022.05.20 |
그룹화(GROUP BY) , 그룹 함수(SUM, AVG, MAX, MIN, COUNT, STDDEV, VARIANCE) (2) | 2022.05.20 |
문자열 비교 : LIKE , 비교 연산자 = , IN (1) | 2022.05.20 |
CHAR, VARCHAR, VARCHAR2 비교 (0) | 2022.05.20 |