* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Linux 64bit |
|
9.1 |
|
10.1 |
|
CUBRID 매니저 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
아래와 같은 테이블(table1) 데이터로부터
year | bsns_cd | sn | ano | bno | sum |
---|---|---|---|---|---|
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000493 | 464000000 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000493 | 464000000 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000528 | 467000000 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000528 | 467000000 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000563 | 467000000 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000563 | 467000000 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000567 | 467000000 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000567 | 467000000 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000489 | 575000000 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000489 | 575000000 |
2021 | KN07000 | 1 | RRN_0000000325 | RMN_0000000578 | 468000000 |
2021 | KN07000 | 1 | RRN_0000000325 | RMN_0000000578 | 468000000 |
2021 | KN07000 | 2 | RRN_0000000308 | RMN_0000000554 | 135400000 |
2021 | KN08000 | 1 | RRN_0000000299 | RMN_0000000409 | 354000000 |
아래표와 같이 year, bsns_cd, sn을 기준으로 ano, bno에 대한 asc order를 유지한 상태로 ano, sum에 따른 일련번호(sn2)를 부여하려고 합니다.
year | bsns_cd | sn | ano | bno | sum | sn2 |
---|---|---|---|---|---|---|
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000489 | 575000000 | 1 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000489 | 575000000 | 1 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000493 | 464000000 | 2 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000493 | 464000000 | 2 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000528 | 467000000 | 3 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000528 | 467000000 | 3 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000563 | 467000000 | 3 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000563 | 467000000 | 3 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000567 | 467000000 | 3 |
2021 | KN07000 | 1 | RRN_0000000324 | RMN_0000000567 | 467000000 | 3 |
2021 | KN07000 | 1 | RRN_0000000325 | RMN_0000000578 | 468000000 | 4 |
2021 | KN07000 | 1 | RRN_0000000325 | RMN_0000000578 | 468000000 | 4 |
2021 | KN07000 | 2 | RRN_0000000308 | RMN_0000000554 | 135400000 | 1 |
2021 | KN08000 | 1 | RRN_0000000299 | RMN_0000000409 | 354000000 | 1 |
그런데 DENSE_RANK 함수가 용도에 맞다고 생각하여
SELECT year, bsns_cd, sn, ano, bno, sum, DENSE_RANK() OVER (PARTITION BY year, bsns_cd, sn ORDER BY ano, sum) AS sn2
FROM table1;
이 쿼리를 실행하면 sum=464000000인 항목(빨간색)이 sn2=1이 되고 sum=467000000인 항목(파란색)이 sn2=2가 되어서 bno의 순서가 맞지 않게 됩니다.
위와 같은 결과를 출력하려면 쿼리에서 집함함수와 정렬 관계를 어떻게 작성해야 할지 문의드립니다.(큐브리드 버전 9.1, 매니저 버전 10.1)