一、人人车:
1.设计一个销售表,并给出SQL语句用来统计给定的时间段内,每人每天的销售额和销售总量。
create table sales {
id int not null auto_increment,
emp_id int not null,
sale_time int not null, # 使用时间戳表示,为了索引查找方便
total dec(10,2),
primary key(id),
key(sale_time,emp_id)
}
--- 思路:
①每人每天的销售额和销售总量?
答:肯定得group by 每天,emp_id进行分组然后count(1),sum(total)就OK了
②核心在于每天怎么表示?
from_unixtime(sale_time,'%Y-%m-%d)
整体思路就是:先表示出每天每个人的记录,作为结果集a ,然后在对结果集a分组获得统计值
-- SQL语句:
假设开始时间戳为start,结束时间戳为end
select a.emp_id,a.time,count(1),sum(a.total) from ( select from_unixtime(sale_time,'%Y-%m-%d) as time ,emp_id,total from sales where sale_time>=start and sale_time<=end ) as a group by a.time,emp_id oder by null;
-- 那么问题来了?
①每月/年 每人统计,怎么写?
②如果sale_time字段定义为datetime类型该怎么写?(提示:a.可以仿照上面写;b.不使用子查询而是直接在group by中使用year(sale_time),month(sale_time),day(sale_time),emp_id进行分组)
更多的时间函数参考:http://www.cnblogs.com/ggjucheng/p/3352280.html