본문 바로가기
[2]SW Development Note

MSSQL 구간 번호 구하기.

by 오늘도 빛나는 너에게 2021. 8. 2.
728x90

10만개의 데이타가  들어 있는 테이블 1개가 있다고 가정.

 

10만개의 데이타를 10개를 나줘 시작 번호와 끝번호를 가져와라.

 

시작번호 와 끝번호를 가져오려고 하는 대상 테이블 필드의 최대값을 알아야한다 .

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DECLARE @ROWS INT = 13859850,  --> 대상 테이블의 전체 Row 수 또는 MAX 값
    @BATCHES INT = 10--> 나눌려는 
WITH 
E(N) AS(
  SELECT N FROM (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0))E(N)
),
E2(N) AS(
  SELECT A.N FROM E A, E B
),
E4(N) AS(
  SELECT A.N FROM E2 A, E2 B
),
CTETALLY(N) AS(
  SELECT TOP (@BATCHES) ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) N
  FROM E4
)
SELECT N AS [THERANGE],
    1 + CEILING(@ROWS / @BATCHES) * (N -1) AS [RANGESTART], 
    CEILING(@ROWS / @BATCHES) * N AS [RANGEEND]
FROM CTETALLY
cs
728x90

'[2]SW Development Note' 카테고리의 다른 글

MSSQL 외래키 조회  (0) 2021.08.11
nmap 명령어/사용법  (0) 2021.08.02
특정 필드의 정수 값으로 row 분할하기.[MSSQL]  (0) 2021.08.02
Flutter  (0) 2020.12.02
버그란 무엇인가?  (0) 2020.08.28

댓글