티스토리 뷰
-- rank() 함수를 사용
-- 전체적인 순위를 구해줍니다.
오라클을 주로 쓰던 사람의 경우 오라클 분석 함수의 강력함을 알고 있다.
분석 함수의 기능이 막강하고 많은 기능들이 있지만 타 DB에서도 다음과 같은 방법으로 workaround 가 가능 하다.
select 학반, 성적, 이름, rank() over(order by 학반,성적 desc) as 순위
from #tmp
order by 학반, 성적 desc
;
< 결과 >
학반 성적 이름 순위
---- ----------- ---------- --------------------
A 100 홍길동 1
A 80 홍길서 2
A 70 홍길북 3
A 10 홍길서 4
B 100 홍길동 5
B 90 홍길남 6
6 Row(s) affected
-- 다음은 self 조인을 이용하여 자신보다 성적이 좋은 사람이
-- 몇명인지를 count하여 순위를 구하는 방법입니다.
-- 이게 원하는 결과죠? ^^
select a.학반, a.성적, a.이름, 순위 = count(*)
from #tmp a, #tmp b
where a.학반 = b.학반
and a.성적 <= b.성적
group by a.학반, a.성적, a.이름
order by a.학반, a.성적 desc
;
< 결과 >
학반 성적 이름 순위
---- ----------- ---------- --------------------
A 100 홍길동 1
A 80 홍길서 2
A 70 홍길북 3
A 10 홍길서 4
B 100 홍길동 1
B 90 홍길남 2
6 Row(s) affected
- Total
- Today
- Yesterday
- 구글
- Datapump
- ChatGPT
- auto increment
- 퇴사
- NHN 면접
- 습관의힘
- 브레인피드백
- oracle
- 커뮤니케이션의 7가지 나쁜 습관들
- 카이에 소바주 시리즈
- CUBRID
- shared all
- 튜닝
- 다짐
- 프로젝트
- 아웃라이어
- 구조주의 인류학
- 큐브리드
- getGeneratedKeys
- 바이오해킹
- 꿈
- 일본전산
- 셀프 조인
- 오라클
- 성공의길
- 데이터과학
- shared everything
- 디자인패턴
- DB
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |