面试题

一、人人车:

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



最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,329评论 18赞 399
  • (一)Oracle数据库 1.oracle中row_id理解 ORACLE的row_id是一个伪列,其个是为18个...
    独云阅读 5,780评论 0赞 10
  • 这周放假,靖靖又回家了。 星期天,带着靖靖去游泳了,他可开心了。 游了十五分钟,或许是累了吧。穿好衣服他就睡了。 ...
    刘将军阅读 229评论 0赞 0
  • (续)学习是很枯燥的,而且要会有很大的心理压力。 百分之七十的人是因为遇到的困难去算命; 百分之二十的人因为工作生...
    曾末阅读 487评论 0赞 0
  • 有时候你做了错事,不止伤害了别人,自己还要背负一辈子的内疚
    初始为白阅读 254评论 0赞 0

友情链接更多精彩内容