데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
ms-sql 인데요 아래처럼 idx값과 id는 디비에 저장이 되어있구요 뿌릴때 cnt값을 구하려고 합니다.
각각의 아이디 cnt값을 구하는건데요 처음에는 1이고 해당 아이디가 있으면 각각 더해서 cnt해야하는데 어떻게 select하면 될지 알고 싶습니다.
idx id cnt
8 aaa 3 << 세번째 aaa 이므로 3
7
aaa 2 << 두번째 aaa 이므로 2
6 bbb 3
5 ccc 2
<< 두번째 ccc 이므로 2
4 aaa 1 << 첫번째 aaa 이므로 1
3
bbb 2
2 bbb 1
1 ccc 1 << 첫번째 ccc 이므로 1
CREATE TABLE test1
(
idx int,
id nvarchar(20)
)
insert test1 select 8 ,'aaa'
insert test1 select 7 ,'aaa'
insert test1 select 6 ,'bbb'
insert test1 select 5 ,'ccc'
insert test1 select 4 ,'aaa'
insert test1 select 3 ,'bbb'
insert test1 select 2 ,'bbb'
insert test1 select 1 ,'ccc'
select *,
RANK() OVER (ORDER BY id asc) as nrum,
ROW_NUMBER() OVER (ORDER BY id asc, idx asc) as nrum1,
ROW_NUMBER() OVER (ORDER BY id asc, idx asc) - RANK() OVER (ORDER BY id asc) + 1
from test1
order by idx desc