2016-07-06 5 views
2

제품 수량 컬럼이 있고 데이터베이스에 한 달에 여러 항목이 있습니다.월 단위로 데이터베이스 테이블에서 합계를 선택하십시오.

날짜 형식은 (YYYY-MM-DD)

Date   Quantity 
2016-03-01 1200 
2016-03-05 200 
2016-04-05 500 
2016-04-10 1000 
2016-05-05 850 
2016-05-10 50 

그래서 내가 같은 데이터 원하는 :

  • 월 (2016년 3월 31일에 2016년 3월 1일) = 1400
  • 을 (2016년 4월 1일 2016년 4월 30일에)
  • 4월 = 1500
  • 월 (2016년 5월 31일에 2016년 5월 1일) = 900
,536,913,632 10

어떻게해야합니까?

답변

1

에게 사용을 원하는 돌아갑니다 같이

SELECT DATE_FORMAT('%Y-%m', `date`) as `ym`, SUM(`quantity`) FROM `table` GROUP BY `ym` ORDER BY `ym` ASC 
+0

이 쿼리는 바람직하지 않습니다. 'GROUP BY' 절에도 나타나지 않는'SELECT' 절의 비 집계를 포함합니다. –

0

quantity 필드의 합계를 합계로하여 월 및 연도별로 그룹화 할 수 있습니다.

SELECT MONTH(Date), YEAR(Date), SUM(quantity) 
FROM yourTable 
GROUP BY MONTH(Date), YEAR(Date) 

멋진 출력을 실제 날짜 범위로 설정하려면 작업이 더 필요합니다. 해당 날짜는 원래 데이터 세트에 존재하지 않을 수 있으므로 날짜 테이블이 필요할 수 있습니다. 그리고 윤년에 2 월을 처리하는 것은 정말 고통 스러울 수 있습니다.

1
select MONTH(Date) As dt , SUM(quantity) total from @Table1 
    GROUP BY MONTH(Date) 
+0

SUM (수량), SUM (수량)? 대문자인지 아닌지가 중요합니까? – unixmiah

+1

@unixmiah 전혀 아니요 – mohan111

1

당신하여 quantity 필드의 SUM 다음 GROUP_BYyear-month 필드를 선택, 바로 year-month 형식으로 date 필드를 변환 DATE_FORMAT를 사용할 수 있습니다. 그것은 다음과 같은 쿼리

SELECT CONCAT(DATE_FORMAT(date,'%b'),' ', 
    (SELECT CONCAT('(',YEAR(date),'-',LPAD(MONTH(date),2,0),'-01 - ') 
), (SELECT concat(last_day(date),')') 
    )) dates, SUM(quantity) qty FROM DATES GROUP BY MONTH(date) ORDER BY MONTH(date) 
0

은 같은 다음 쿼리를 사용하여 당신이 원하는 결과를 반환합니다.

'날짜 필드'는 날짜가 삽입 된 열의 이름이고 Tablename은 테이블의 이름입니다.

SELECT MONTH(date field) as month , YEAR(date field) as year , SUM(quantity) as 
    quantity FROM Tablename GROUP BY MONTH(date field) 
+0

필드 및 테이블 이름을 쿼리의 주어진 필드 및 테이블 이름으로 바꾸고 다시 실행하십시오.이 쿼리를 테스트 했으므로 잘 실행됩니다. –

관련 문제