일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JEUS
- 이클립스
- 도서
- oracle
- JavaScript
- miplatform
- java
- Eclipse
- 에러
- 기타소득
- 성능
- 오라클
- 톰캣
- 마이플랫폼
- 함수
- 한글
- Report Designer
- 오류
- 자바
- Excel
- 데이터베이스
- 태그를 입력해 주세요.
- error
- Book
- DB
- 회계
- Tomcat
- MIP
- 튜닝
- 엑셀
- Today
- Total
어느 가을날의 전환점
ORACLE|KEEP(DENSE_RANK FIRST ORDER BY …) - A컬럼 기준 정렬 후 지정 된 행의 B컬럼값 추출하기 본문
ORACLE|KEEP(DENSE_RANK FIRST ORDER BY …) - A컬럼 기준 정렬 후 지정 된 행의 B컬럼값 추출하기
어느가을빛 2010. 6. 17. 17:08필드 a와 같은 record에 있는 필드 b의 값을 가져오는 방법.
first나 last 함수는 행을 서열화 시켜서 첫 번째나 마지막 행을 추출한다.
MIN(B) (DENSE_RANK FIRST ORDER BY A [ASC|DESC])
MAX(B) (DENSE_RANK LAST ORDER BY A [ASC|DESC])
【형식】
집합함수 KEEP (
DENSE_RANK FIRST ORDER BY
expr [DESC|ASC][NULL{FIRST|LAST}],...)
【예제】
SQL> select
2 min(salary) keep (dense_rank first order by salary) "Worst",
3 max(salary) keep (dense_rank last order by salary) "Best"
4 from employees
5 order by id;
Worst Best
---------- ----------
220 250
SQL> select * from employees;
ID DEPT_NO NAME SALARY BONUS
---------- ---------- ---------- ---------- ----------
1101 10 Cho 250 125
1102 20 Joe 240 100
1103 10 kim 250 100
1104 20 jijoe 220 100
1. MIN(a) 의 경우
MIN(b) KEEP(DENSE_RANK FIRST ORDER BY a)
2. MAX(a)의 경우
MAX(b) KEEP(DENSE_RANK FIRST ORDER BY a DESC)
와 같이 사용하면 a의 값에 따른 필드 b의 값을 가져 올 수 있습니다.
ex) table명 table1
field1 field2
1 c
2 b
3 a
SQL> select MIN(field1), MIN(field2) KEEP(DENSE_RANK FIRST ORDER BY field1) AS field2 from table1
결과>1, c
SQL> select MAX(field1), MAX(field2) KEEP(DENSE_RANK LAST ORDER BY field1) AS field2 from table1
결과> 3 , a
'Database > Oracle' 카테고리의 다른 글
ORACLE|ORA-00980 : synonym translation is no longer valid (0) | 2010.07.06 |
---|---|
ORACLE|달력(Calendar) (0) | 2010.07.06 |
ORACLE|1부터 주어진 수까지 누적합 구하기 (0) | 2010.06.17 |
ORACLE|REGEXP_REPLACE() 함수 – 정규식 지원 REPLACE 함수 (0) | 2010.06.17 |
ORACLE|윤년 여부를 반환하는 함수 (0) | 2010.05.26 |