본문 바로가기

오라클

오라클 ORDER BY : 정렬


 -- ORDER BY : 정렬  

  -- ASC : 오름차순(생략하면 오름차순)

  -- DESC : 내림차순


-- 오름차순 정렬

SELECT name, basicpay FROM insa ORDER BY basicpay;

SELECT name, basicpay FROM insa ORDER BY basicpay ASC;


-- 내림차순 정렬

SELECT name, basicpay FROM insa ORDER BY basicpay DESC;


--부서별 오름차순으로 정렬하고 부서가 같으면 직위 오름차순 정렬( ㄱ 부터 A 부터 1부터)

SELECT name, buseo,jikwi FROM insa ORDER BY  buseo, jikwi;


--부서별 내림차순으로 정렬하고 부서가 같으면 직위 오름차순 정렬(ㅎ 부터 Z 부터 9부터)

 SELECT name, buseo,jikwi FROM insa ORDER BY buseo DESC, jikwi;

 SELECT name, buseo,jikwi FROM insa ORDER BY buseo DESC, jikwi ASC;

 

 -- 다음은 오류가 발생한다  이유가 무엇이고 오류가 없도록 수정 할 것.

 SELECT name, basicpay,sudang,(basicpay + sudang) pay

 FROM insa

 WHERE pay >=2500000  -- WHERE절에는 pay라는 컬럼이 없다.

 ORDER BY pay DESC;

 

 => 컴파일 순서에 따라서 오류가난다

  SELECT name, basicpay,sudang,(basicpay + sudang) pay

 FROM insa

 WHERE (basicpay + sudang) >=2500000  -- WHERE절에는 pay라는 컬럼이 없다.

 ORDER BY pay DESC; --ORDER BY는 가장 마지막에 컴파일 되므로  pay나 (basicpay + sudang) 둘중 아무거나 써도 상관없다.

 

 -- city가 서울 사람중(basicpay + sudang) 내림차순으로 정렬하여 출력

   -- 출력 컬럼 : name, city, basicpay + sudang pay, buseo

   SELECT name, city,(basicpay+sudang) pay, buseo

   FROM insa

   WHERE city='서울'

   ORDER BY pay DESC;


 -- 여자 (ssn이 이용) 중 부서 오름차순으로 정렬하고 부서가 같으면 기본급 내림차순으로 정렬

    -- 출력 컬럼 : name, ssn,buseo, basicpay

    SELECT name, ssn, buseo, basicpay

    FROM insa

    WHERE SUBSTR(ssn, 8, 1) IN (2,4,6)

    ORDER BY buseo ASC, basicpay DESC