2016-07-12 2 views
2

다음 표와 같습니다. 나는 1-4 주간의 모임을 함께하고 5-8 주간의 모임을 함께하는 방식으로 그룹을 만들고 싶다. 또는 다른 말로 내가 필드 아래에서 월별 총을 얻으려면열의 숫자 집합으로 그룹화하는 방법

table1 

weeknum amount  
1   1000  
2   1100  
3   1200  
4   1300  
5   1400  
6   1500  
7   1600  
8   1700 

내가 필요로하는 출력은 아래의 대답은 다음과 같이 내 실제 값을 정확히 작동하지 않았다

output 
max(weeknum)  sum(amount) 
4     4600 
8     6200 

다음과 같다. 나는 4 주 그룹으로 시작하고 싶다. 식 (WEEKNUM-1) 예상과 같이/4 반환 3 개 그룹은 2

weeknum Group Expr Expected Group Expr 
1855 463   463  
1856 463   463 
1857 464   463 
1858 464   463 
1859 464   464 
1860 464   464 
1861 465   464 
1862 465   464 

답변

2

group by 절에 수를 내림 FLOOR를 사용해보십시오 오라클에서 쿼리를 실행할 필요가 있습니다 :

SELECT MAX(t.weeknum),sum(amount) 
FROM table1 t 
GROUP BY FLOOR((t.weeknum-1)/4) 

이 4 주마다이 그룹으로 처리되어 있는지 확인합니다 :

(1-1)/4 -> 0 
(2-1)/4 -> 0 
... 
(5-1)/4 -> 1 
+0

와우. 고마워요! – kten