2014-11-11 5 views
0

MySQL에서는 10 일 단위의 데이터를 특정 기간 동안 집계해야한다고 가정 해 봅니다.MySQL 10 일 단위의 데이터 합계

SELECT SUM(imps) FROM impressions i WHERE i.date BETWEEN SUBDATE('2014-11-10', 9) AND '2014-11-10' 
UNION ALL 
SELECT SUM(imps) FROM impressions i WHERE i.date BETWEEN SUBDATE('2014-11-08', 9) AND '2014-11-08' 
UNION ALL 
SELECT SUM(imps) FROM impressions i WHERE i.date BETWEEN SUBDATE('2014-11-07', 9) AND '2014-11-07' 
.... 
; 

내가 한 달 동안이 작업을 수행하거나 더 긴 기간 필요 상상, UNION ALL 's의 많이있을 것입니다.

저장 프로 시저에서 루프를 사용하여이 작업을 수행 할 수 있다는 것을 알고 있지만 저장 프로 시저를 사용하지 않고이 작업을 수행 할 수있는 방법이 있습니까? 나 수 GROUP BY 절 트릭합니까?

감사합니다. 테이블 노출

샘플 데이터 : 날짜 임프 2014년 11월 10일 10 2014년 11월 9일 15 2014년 11월 8일 7 ...

+1

샘플 데이터 제공 – Wanderer

답변

1

당신은 열에 결과를 넣을 수 있으며, 서로 다른 행을 원하는 경우

SELECT SUM(case when i.date BETWEEN SUBDATE('2014-11-10', 9) AND '2014-11-10' then imps else 0 end), 
     SUM(case when i.date BETWEEN SUBDATE('2014-11-08', 9) AND '2014-11-08' then imps else 0 end), 
     SUM(case when i.date BETWEEN SUBDATE('2014-11-07', 9) AND '2014-11-07' then imps else 0 end)  
FROM impressions i; 

는, 당신은 join를 사용할 수 있지만 값의 테이블이 필요합니다 :

을 조건부 집계를 사용
+0

두 가지 방법 모두 매우 똑똑합니다! 고마워요! – iZeroGue