2017-11-22 4 views
-2

post_no 열을 생성하고 그룹으로 데이터를 분할하여 1000 개의 게시물을 모두 그룹화 할 수 있습니다. 나는 지역 A의 3222 총 게시물과 B 영역에서 4174 개 게시물이있는 경우데이터 행을 1000으로 그룹화

예를 들어, 내가 지금처럼 1000 년대에 그룹화 된 게시물 원하는 :

post_no  id region amount 
0001 - 1000 1 A  1000 
1001 - 2000 2 A  1000 
2001 - 3000 3 A  1000 
3001 - 3222 4 A  222 
0001 - 1000 5 B  1000 
1001 - 2000 6 B  1000 
2001 - 3000 7 B  1000 
3001 - 4000 8 B  1000 
4001 - 4174 9 B  174 

을 나는 SQL 또는 파이썬 코드를 사용하는 것을 선호 것 이것을 구현하기.

+0

사용중인 라이브러리 또는 DB에서 데이터를 가져 오는 방법을 제공하지 않았기 때문에 여기있는 것이 최선의 방법입니다. COUNT() 함수를 사용하고 싶습니다. 'SELECT COUNT (post_no) FROM table_name 어디에서 시작 하나

답변

2

UPDATE :

난 그냥 아직도 많은 이해가되지 않습니다 질문을 다시 읽었습니다,하지만 난 여기에 요구되는 질문에 대답 아니에요 결론을했습니다, 그러나 나는 약간의 길에서 OP를 돕는 경우를 대비하여 당분간 여기에 남겨 둘 것이다.


그래서 나는 당신이 무엇을 찾고 있는지 알았습니다. 그리고 데이터를 약간 변경하여 작업 샘플을 만들었습니다. 따라서 110001~111000 값이 110001~111000 인 곳에서 샘플 값을 1000으로 수정했습니다. 이러한 값이 이와 같이 표시되는 이유와 사용 방법에 대한 설명을 제공하지 않았기 때문입니다.

이 샘플은 당신에게 값이 1000

참조로 나누어 여부에 따라 원하는 amount 값을 얻을 수있는 기본 동작을 제공합니다

% (Modulus) (Transact-SQL)

가 반환을 한 숫자를 나머지 숫자로 나눈 값.

샘플

CREATE TABLE #temp 
(post_no INT, id INT, region NVARCHAR(1)); 

INSERT INTO #temp 
(post_no, id, region) 
VALUES 
(1000, 1, 'A'), 
(2000, 2, 'A'), 
(3000, 3, 'A'), 
(3222, 4, 'A'), 
(1000, 5, 'B'), 
(2000, 6, 'B'), 
(3000, 7, 'B'), 
(4000, 8, 'B'), 
(4174, 9, 'B'); 

SELECT t.post_no, 
     t.id, 
     t.region, 
     CASE WHEN t.post_no % 1000 = 0 
      THEN post_no/ROW_NUMBER() OVER (PARTITION BY t.region ORDER BY id) 
      ELSE t.post_no % 1000 
      END AS amount  
FROM #temp AS t; 

DROP TABLE #temp; 

결과 :

post_no  id   region amount 
----------- ----------- ------ -------------------- 
1000  1   A  1000 
2000  2   A  1000 
3000  3   A  1000 
3222  4   A  222 
1000  5   B  1000 
2000  6   B  1000 
3000  7   B  1000 
4000  8   B  1000 
4174  9   B  174 

주 :이 더욱 단순화 될 수

단순히 1000 돌아 여기서 N umber는 1000으로 나눌 수 있지만 안전을 위해 위에서 둡니다. 대체 코드는 다음과 같습니다.

+0

감사합니다. 나는 시도 할 것이다. –