2012-08-13 4 views
0

나는이 같은 테이블 구조 및 샘플 데이터가 :지난 6 개월간 판매액을 선택하는 방법은 무엇입니까?

이제
+----+-----------+------+-------+---------+ 
| id | item_code | year | month | sales | 
+----+-----------+------+-------+---------+ 
| 1 | 12341 | 2011 | 10 | 1000000 | 
+----+-----------+------+-------+---------+ 
| 2 | 12342 | 2011 | 11 | 2000000 | 
+----+-----------+------+-------+---------+ 
| 3 | 12343 | 2011 | 12 | 3000000 | 
+----+-----------+------+-------+---------+ 
| 4 | 12344 | 2012 | 01 | 4000000 | 
+----+-----------+------+-------+---------+ 
| 5 | 12345 | 2012 | 02 | 5000000 | 
+----+-----------+------+-------+---------+ 
| 6 | 12346 | 2012 | 03 | 6000000 | 
+----+-----------+------+-------+---------+ 
| 7 | 12347 | 2012 | 04 | 6000000 | 
+----+-----------+------+-------+---------+ 

내 질문에, 예를 들어 현재 월 2012 (04-2012) 8 월이다 우리는 지난 6 개월 동안 데이터를 선택 어떻게, 어떤 다음과 같습니다 :

+----+-----------+------+-------+---------+ 
| id | item_code | year | month | sales | 
+----+-----------+------+-------+---------+ 
| 1 | 12341 | 2011 | 10 | 1000000 | 
+----+-----------+------+-------+---------+ 
| 2 | 12342 | 2011 | 11 | 2000000 | 
+----+-----------+------+-------+---------+ 
| 3 | 12343 | 2011 | 12 | 3000000 | 
+----+-----------+------+-------+---------+ 
| 4 | 12344 | 2012 | 01 | 4000000 | 
+----+-----------+------+-------+---------+ 
| 5 | 12345 | 2012 | 02 | 5000000 | 
+----+-----------+------+-------+---------+ 
| 6 | 12346 | 2012 | 03 | 6000000 | 
+----+-----------+------+-------+---------+ 

... 평균 판매 값을 얻으시겠습니까? 어떤 아이디어? 티아!

답변

3

가장 좋은 방법은 적절한 날짜를 포함하도록 테이블을 재구성하는 것입니다. 필요에 따라이 열을 특정 용도로 유지할 수 있지만 적절한 날짜를 사용하면 지금 당장 필요한 것을 기반으로 강력한 SQL 함수를 사용할 수 있습니다.

당신은 예를 들어 이런 식으로 뭔가를 할 수있을 것입니다 :

select avg(sales) from ... 

: eggyal가 제대로 언급으로

select someData from yourTable where columnDate>=date_sub(now(), interval 6 month); 

, 당신은 쉽게이 같은 집계 함수를 많이 얻을 수있을 것입니다 where 절에 넣은 조건 (지난 6 개월과 같은) 동안의 평균 매출을 가져올 것입니다.

select date_format(columnDate, '%Y') from .... // output: 2012 

그 기능 : 당신도 현재 연/월 열을 유지하지 않는 경우

이 같은 뭔가 info out of a date column 것을 얻을 수 있나요? 지금 그 달 원하는가?

select date_format(columnDate, '%m') from .... // output: 08 

무엇입니까? 한 달 전체 이름을 원해? BAM!

select date_format(columnDate, '%M') from .... // output: August 
+0

한 내 첫번째 생각 : – Havelock

+2

그리고 평균을 얻기 위해, 하나는 단지로부터 AVG (판매) SELECT ...'아이디어에 대한 – eggyal

+1

감사합니다'필요하지만 절은하지 않는 것 # 1064 - SQL 구문에 오류가 있습니다. '6 MONTH'근처에서 사용할 올바른 구문에 대해서는 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. – Mico

관련 문제