뇨내

[Oracle - SQL Developer] order 본문

Oracle/Column + Order

[Oracle - SQL Developer] order

삐옥 2021. 11. 13. 21:21

 

 

 

 

 

 

 


 

 

 

 

ORDER BY

정렬, Sort
- order by 절

SELECT 컬럼리스트
FROM 테이블
WHERE 조건;
ORDER BY 기준;

 

실행순서★★★
1. FROM 테이블
2. WHERE 조건
3. SELECT 컬럼리스트
4. ORDER BY 기준

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
-- name + 오름차순
select * from tblCountry order by name asc;
-- name + 내림차순
select * from tblCountry order by name desc;
 
 
 
select name, jikwi  from tblInsa where buseo = '기획부';
-- 실행순서
select name, jikwi      --3
from tblInsa            --1 
where buseo = '기획부'      --2
order by name asc;      --4
 
 
 
-- 다중 정렬
select name, buseo, jikwi, basicpay from tblInsa order by buseo ;                                --1차 정렬, 생략하면 asc임
select name, buseo, jikwi, basicpay from tblInsa order by buseo asc, jikwi asc;                  --2차 정렬
select name, buseo, jikwi, basicpay from tblInsa order by buseo asc, jikwi asc, basicpay asc;    --3차 정렬
 
select * from tblInsa; --1) 원래 부서는 7번째 컬럼
 
-- 하지말것 > 가독성 낮음
select name, buseo, jikwi, basicpay from tblInsa order by 2 ;       -- 컬럼순서, 2) select 절에서 부서가 2번째 순서
select name, buseo, jikwi, basicpay from tblInsa order by 2 asc, 3 asc, 4 asc;    
 
 
 
 
-- 급여 + 수당 > 정렬     *****응용 : 단일 컬럼만이 정렬 기준이 될 수 있는것이 아니라, 가공된 값도 가능하다.
select * from tblInsa order by basicpay + sudang desc;
    
-- 직위별로 정렬 : 부장 > 과장 > 대리 > 사원 순으로...
-- 자바 수업? 문자열 정렬, 코드값 정렬X > 멤버 변수 추가 > 숫자
select name, jikwi from tblInsa order by jikwi;
 
 
select 
    name, jikwi,
    case
        when jikwi = '부장' then 4
        when jikwi = '과장' then 3
        when jikwi = '대리' then 2
        when jikwi = '사원' then 1
    end as jikwiseq
from tblInsa order by jikwiseq desc;
 
 
-- 위와 똑같은 쿼리
select 
    name, jikwi,
    case
        when jikwi = '부장' then 4
        when jikwi = '과장' then 3
        when jikwi = '대리' then 2
        when jikwi = '사원' then 1
    end
from tblInsa order by 3 desc;
 
-- 위와 똑같은 쿼리2 + 숫자 없앰
select 
    name, jikwi
from tblInsa order by case
                        when jikwi = '부장' then 4
                        when jikwi = '과장' then 3
                        when jikwi = '대리' then 2
                        when jikwi = '사원' then 1
                      end desc; -- case ~ end는 컬럼이 들어가는 위치면 다 들어갈 수 있음
 
 
-- 기획부 : 남자 직원 -> 여자직원
select * from tblInsa 
    where buseo = '기획부' 
    order by case 
                when ssn like '%-1%' then 1
                when ssn like '%-2%' then 2
            end asc;
 
 
-- ** 쿼리를 1열로 정렬해도 되고 가독성이 좋게 '절'마다 엔터를 쳐도 된다. 
cs

 

 


 

'Oracle > Column + Order' 카테고리의 다른 글

[Oracle - SQL Developer] column : 컬럼  (0) 2021.11.13
Comments