use employees; create table sales( id int auto_increment, date datetime not null, cost int unsigned not null, primary key(id) ); insert into sales (date,cost)values('2010-12-31',100); insert into sales (date,cost)values('2011-01-01',200); insert into sales (date,cost)values('2011-01-02',100); insert into sales (date,cost)values('2011-01-06',100); insert into sales (date,cost)values('2011-01-10',100); SELECT * FROM employees.sales; select week(date),sum(cost)from sales group by week(date); select floor(datediff(date,'1900-01-01')/7) as a,sum(cost) from sales group by floor(datediff(date,'1900-01-01')/7); /*最终解决方案*/ select date_add('1900-01-01',interval floor(datediff(date,'1900-01-01')/7)*7 day) as week_start, date_add('1900-01-01',interval floor(datediff(date,'1900-01-01')/7)*7+6 day)as week_end,sum(cost) from sales group by floor(datediff(date,'1900-01-01')/7);