Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 조건문
- 예제
- 집합 연산자
- 단일행 함수
- 프로시저
- java
- 백준
- rank
- 오라클
- 무결성 제약 조건
- while
- 트리거
- sql 예제
- 15552
- 데이터베이스
- PARTITION BY
- 반복문
- 이클립스
- union
- 그룹함수
- join
- SQL
- Sequence
- BufferedReader
- BufferedWriter
- 서브쿼리
- 연결
- for문
- 별찍기
- 저장
Archives
- Today
- Total
control Y
[오라클] 순위 관련 함수 본문
RANK()
중복 순위 개수만큼 다음 순위 값을 증가 시킴
형식 : RANK() OVER(ORDER BY 컬럼명 (ASC|DESC)) (AS 별칭)
EX 1) 사원테이블에서 80번 부서에 소속된 사원 중에서 입사년도가 가장 최근에 입사한 순부터 사원번호, 사원명, 입사일자, 순위를 부여하여 출력해보자
SELECT EMPLOYEE_ID AS 사원번호, FIRST_NAME AS 사원명, HIRE_DATE AS 입사일자,
RANK() OVER(ORDER BY HIRE_DATE DESC) AS 순위
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 80;
DENSE_RANK()
중복 순위가 존재해도 순차적으로 다음 순위 값을 표시함
EX 2) 사원테이블에서 80번 부서에 소속된 사원 중에서 급여가 가장 높은 순으로 사원번호, 사원명, 입사일자, 순위를 부여하여 출력해보자
SELECT EMPLOYEE_ID AS 사원번호, FIRST_NAME AS 사원명, SALARY AS 급여,
DENSE_RANK() OVER(ORDER BY SALARY DESC) AS 순위
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 80;
ROW_NUMBER()
중복값에 관계없이 SEQUENCE(순차적인 순위 값) 값을 반환
EX 3) 각 부서에 소속된 사원 한명만을 출력 (사원번호, 사원명, 직무번호, 급여, 부서번호)
SELECT EMPLOYEE_ID,
FIRST_NAME,
JOB_ID,
DEPARTMENT_ID,
ROW_NUMBER() OVER(PARTITION BY DEPARTMENT_ID ORDER BY EMPLOYEE_ID) AS RNUM
FROM EMPLOYEES
ORDER BY DEPARTMENT_ID;
EX 4) EMPLOYEES 테이블에서 각 부서별 입사일이 가장 오래된 사원의 사원번호, 사원명, 부서번호, 입사일을 출력하라 > 중복된 입사일은 한명만 출력(ROW_NUMBER)
SELECT EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_ID, TO_CHAR(HIRE_DATE, 'YYYY-MM-DD') HIRE_DATE
FROM (SELECT ROW_NUMBER() OVER(PARTITION BY DEPARTMENT_ID ORDER BY EMPLOYEE_ID DESC) AS RNUM,
EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_ID, HIRE_DATE
FROM EMPLOYEES
WHERE TO_CHAR(HIRE_DATE, 'YYYY-MM-DD')IN (SELECT TO_CHAR(MIN(HIRE_DATE),'YYYY-MM-DD')
FROM EMPLOYEES GROUP BY DEPARTMENT_ID)) E
WHERE E.RNUM =1
AND DEPARTMENT_ID IS NOT NULL;
반응형
'KH정보교육원 > SQL' 카테고리의 다른 글
[오라클] 시퀀스 정리 (0) | 2023.06.23 |
---|---|
[오라클] PARTITION BY (0) | 2023.06.23 |
[오라클] 뷰 (1) | 2023.06.22 |
[오라클] 그룹함수 관련 과제 (0) | 2023.06.21 |
[오라클] 서브쿼리 정리 (0) | 2023.06.21 |