ORACLE |
2009. 10. 24. 21:39
Posted by Haronoid
- dense_rank() over (partition by 그룹1, 그룹2)
- 그룹단위의 순위를 번호로 표시
- dense_rank는 같은그룹은 전부 같은 순위로 하며, 다음그룹은 현재 순위의 다음 순위로 시작
- 그룹단위의 표시 수를 제어할 때 사용할 수 있다
예제 SQL>
select CA1, CA2, danse_rank() over (partition by CA1, CA2)
from
(
select 'A' CA1, 'B' CA2 from dual
union all
select 'A' CA1, 'B' CA2 from dual
union all
select 'A' CA1, 'C' CA2 from dual
union all
select 'A' CA1, 'C' CA2 from dual
union all
select 'A' CA1, 'D' CA2 from dual
)
->
1: A B 1
2: A B 1
3: A C 2
4: A C 2
5: A D 3
ORACLE |
2009. 10. 24. 21:08
Posted by Haronoid
- rpad(문자열 , 표지수, 매꿔줄문자)
- 문자열을 오른쪽에서 6번째문자까지 표현
- 문자열이 표지수 보다 적을 경우 매꿔줄문자를 대신 체워서 표지수까지 표현
- 문자열의 표지수위치가 멀티바이트 문자일 경우 대상 멀티바이트문자를 제외하고, 빈자리를 매꿔줄 문자로 체워서 표시
- 바이트단위로 문자수를 계산
- 멀티바이트에서의 문자끈김으로인한 에러처리를 안해줘도 됨
예제 SQL>
select rpad('abcd', 6, '_") from dual;
-> abcd__
select rpad('abcde한글', 6, '_") from dual;
-> abcde_
select rpad('abcd한글', 6, '_") from dual;
-> abcd한
iPhone 에서 작성된 글입니다.
ORACLE |
2009. 10. 24. 21:08
Posted by Haronoid
- sum(대상열) over (partition by 그룹1, 그룹2 order by 누적순서)
- "누적순서"의 순서로 "대상열"을 순차적으로 합한 값을 표현
- partition by 를 넣는것으로 그룹단위의 누적합을 구할 수 있다..
예제 sql)
select CA1, CA2, sum(CLM1) over (partition by CA1, CA2 order by CLM2)
from (
select 1 CLM1, 1 CLM2, 'A' CA1, 'B' CA2 from dual;
union all
select 1 CLM1, 2 CLM2, 'A' CA1, 'B' CA2 from dual;
union all
select 1 CLM1, 3 CLM2, 'A' CA1, 'C' CA2 from dual;
union all
select 1 CLM1, 4 CLM2, 'A' CA1, 'C' CA2 from dual;
union all
select 1 CLM1, 5 CLM2, 'A' CA1, 'C' CA2 from dual;
)
->
1: A B 1
2: A B 2
3: A C 1
4: A C 2
5: A C 3