안녕하세요. 이스트럭(강동운) 입니다.


이번에도 sqler 질문에 올라온 글입니다 ^^


바로 그룹번호가 없을 때 RANK 함수를 이용해서 그룹번호를 효과적으로 만들 수 있는 방법입니다~!


질문 링크!!


불쥐님의 RANK 함수 정리!!


CREATE TABLE #TEMP ( NO INT , DATA CHAR(1) ,TNO INT )

INSERT #TEMP

VALUES (1,'A',1),

  (2,'A',0),

  (3,'A',0),

  (4,'B',1),

  (5,'B',0),

  (6,'B',0),

  (7,'C',1),

  (8,'C',0),

  (9,'A',1),

  (10,'A',0),

  (11,'A',0),

  (12,'B',1),

  (13,'B',0),

  (14,'B',0),

  (15,'C',1),

  (16,'C',0),

  (17,'C',0),

  (18,'A',1),

  (19,'A',0),

  (20,'B',1),

  (21,'B',0),

  (22,'C',1),

  (23,'C',0),

  (24,'D',1),

  (25,'D',0)

GO


SELECT * FROM  #TEMP

1.png


SELECT

NO - RANK() OVER(PARTITION BY DATA ORDER BY NO) AS FIRST_GROUP_NO

, NO

, DATA

, TNO

FROM #TEMP


사실 이 쿼리 가지고 효과적으로 그룹번호를 만들 수 있습니다.

SEQUENCE가 없다면.. ROW_NUMBER로 먼저 가공후에 만들 수도 있겠네요~!


2.png


SELECT

FIRST_GROUP_NO

, MAX(NO) OVER(PARTITION BY FIRST_GROUP_NO) AS SECOND_GROUP_NO

, NO

, DATA

, TNO

FROM

(

SELECT

NO - RANK() OVER(PARTITION BY DATA ORDER BY NO) AS FIRST_GROUP_NO

, NO

, DATA

, TNO

FROM #TEMP

) AA

3.png




SELECT

NO

, DATA

, TNO

, DENSE_RANK() OVER(ORDER BY SECOND_GROUP_NO)

FROM

(

SELECT

FIRST_GROUP_NO

, MAX(NO) OVER(PARTITION BY FIRST_GROUP_NO) AS SECOND_GROUP_NO

, NO

, DATA

, TNO

FROM

(

SELECT

NO - RANK() OVER(PARTITION BY DATA ORDER BY NO) AS FIRST_GROUP_NO

, NO

, DATA

, TNO

FROM #TEMP

) AA

) BB

ORDER BY NO


4.png


감사합니다 ^^


혹시 더 좋은 쿼리 있으면 공유해주세요 ^^

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 41792
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 22518
1614 SQL Server 성능 테스트 프로그램 minsouk 2015.01.17 6105
1613 extended events 를 이용한 wait 분석 minsouk 2014.07.25 6295
1612 동일기준에대해 복수컬럼 PIVOT 사용하기 열이 2014.06.27 23441
1611 SELECT / UPDATE / INSERT 쿼리를 쉽게 만들자... [1] Hisory 2014.05.12 10924
1610 ssms 자동 언어 변경이 되면, 이렇게 설정하세요 minsouk 2014.04.27 9615
» [QUERY] 그룹 번호 만들기 이스트럭(강동운) 2014.04.11 9055
1608 [QUERY]연승을 구해보자! [2] 이스트럭(강동운) 2014.04.11 9917
1607 VLF 이스트럭(강동운) 2014.04.11 8168
1606 extended events 용 excel view 공개 버전 minsouk 2014.04.07 6447
1605 [TIP] 한 라인에서 여러 테이블 삭제 하기. [3] 엘리엘1 2014.01.03 8663
1604 GhostRecord(인덱스에서 행 삭제시발생) jevida(강성욱) 2013.11.25 13613
1603 프로시저, 함수, 트리거 생성 정보 보기. jevida(강성욱) 2013.11.25 10675
1602 힙테이블에서 행을 삭제하면어떻게 처리 될까? [1] jevida(강성욱) 2013.11.25 9425
1601 SSMS의 디자이너에서 테이블 수정 시 발생하는 영향 [1] jevida(강성욱) 2013.11.25 10598
1600 SQL Server를 활용한 Perfmon 로그 저장 [1] jevida(강성욱) 2013.11.21 14882
1599 VLF 환경과 성능 jevida(강성욱) 2013.11.21 10159
1598 Block 모니터링 jevida(강성욱) 2013.11.21 8160
1597 추적파일을 테이블로 로드하기. jevida(강성욱) 2013.11.21 8938
1596 LOGON 트리거 jevida(강성욱) 2013.11.18 6609
1595 DeadLock(교착상태) 모니터 하기 [2] jevida(강성욱) 2013.11.18 11478





XE Login