일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- spring framework
- java spring
- POJO
- AOP
- spring
- @test
- Framework
- Di
- @Spring-Test
- JDBC TEMPLATE
- pointcut
- 프로퍼티
- JdbcTemplate
- spring aop
- unix
- myBatis
- Spring Boot
- STS
- Dependency Injection
- 리눅스
- 마이바티스
- @AspectJ
- 컨테이너
- @JUnit
- Spring JDBC
- SpringJDBC
- Linux
- XML
- Ubunt
- java
Archives
- Today
- Total
개키우는개발자 : )
PostgreSQL ROW_NUMBER, RANK, DENSE_RANK 함수 본문
반응형
실습 테이블 만들기 https://dog-developers.tistory.com/154
ROW_NUMBER, RANK, DENSE_RANK
특정 집합 내에서 결과 건수의 변화 없이 해당 집합안에서 특정 컬럼의 순위를 구하는 함수입니다.
실습
ROW_NUMBER
- 집합 내의 순위를 GROUP_NAME 컬럼 기준으로 구하고 GROUP_NAME 기준의 각 순위는 PRICE 컬럼 기준으로 정렬 합니다.
SELECT
A.PRODUCT_NAME,
B.GROUP_NAME,
A.PRICE,
ROW_NUMBER () OVER (PARTITION BY B.GROUP_NAME ORDER BY A.PRICE)
FROM
PRODUCT A
INNER JOIN PRODUCT_GROUP B ON
(A.GROUP_ID = B.GROUP_ID)
ROW_NUMBER는 무조건 순차적으로 순위를 정합니다.
RANK
- 집합 내의 순위를 GROUP_NAME 컬럼 기준으로 구하고 GROUP_NAME 기준의 각 순위는 PRICE 컬럼 기준으로 정렬 합니다.
SELECT
A.PRODUCT_NAME,
B.GROUP_NAME,
A.PRICE,
RANK () OVER (PARTITION BY B.GROUP_NAME ORDER BY A.PRICE)
FROM
PRODUCT A
INNER JOIN PRODUCT_GROUP B ON
(A.GROUP_ID = B.GROUP_ID)
RANK 같은 순위가 있으면 동일 순위로 지정하고 그 다음 순위로 건너 뜁니다.
DENSE_RANK
- 집합 내의 순위를 GROUP_NAME 컬럼 기준으로 구하고 GROUP_NAME 기준의 각 순위는 PRICE 컬럼 기준으로 정렬 합니다.
SELECT
A.PRODUCT_NAME,
B.GROUP_NAME,
A.PRICE,
DENSE_RANK() OVER (PARTITION BY B.GROUP_NAME ORDER BY A.PRICE)
FROM
PRODUCT A
INNER JOIN PRODUCT_GROUP B ON
(A.GROUP_ID = B.GROUP_ID)
DENSE_RANK는 같은 순위가 있으면 동일 순위로 지정하고 그 다음순위를 건너 뛰지 않습니다.
각각의 순위를 지정하는 함수를 사용해 보았습니다.
반응형
'PostgreSQL > 조인과 집계 데이터' 카테고리의 다른 글
PostgreSQL 실습문제1 (0) | 2019.11.09 |
---|---|
PostgreSQL LAG,LEAD 함수 (0) | 2019.11.09 |
PostgreSQL 분석함수 AVG 함수 (0) | 2019.11.09 |
PostgreSQL 분석함수 (0) | 2019.11.09 |
PostgreSQL 분석 함수 실습 테이블 만들기 (0) | 2019.11.09 |
Comments