mysql-group by 专题(包含时间戳的应用)

本文参考http://blog.csdn.net/xxpyeippx/article/details/8059910

1、创建一个关于员工工资的表:

  create table if not exists staff;
  create table staff(
  id int not null primary key auto_increment,   #自动增长的字段不加primary key 的时候创建不了表
  pname char(10) not null,
  dempt varchar(10) not null,
  salary int not null,
  edlevel int(1) not null,
  hiredate timestamp not null);    #此处是关于时间格式字段的创建

2、插入表数据(自动增长字段不用插入数据)

  insert into staff (pname,dempt,salary,edlevel,hiredate) values('张三','开发部',2000,3,'2009-10-11');
  insert into staff (pname,dempt,salary,edlevel,hiredate) values('李四','开发部',2500,3,'2009-10-01');
  insert into staff (pname,dempt,salary,edlevel,hiredate) values('王五','设计部',2600,5,'2010-10-02');
  insert into staff (pname,dempt,salary,edlevel,hiredate) values('王六','设计部',2300,4,'2010-10-03');
  insert into staff (pname,dempt,salary,edlevel,hiredate) values('马七','设计部',2100,4,'2010-10-06');
  insert into staff (pname,dempt,salary,edlevel,hiredate) values('赵八','销售部',3000,5,'2010-10-05');
  insert into staff (pname,dempt,salary,edlevel,hiredate) values('钱九','销售部',3100,7,'2010-10-07');
  insert into staff (pname,dempt,salary,edlevel,hiredate) values('孙十','销售部',3500,7,'2010-10-06');

3、查询

  select id,pname,dempt,salary,edlevel,date(hiredate) as hiredate from staff;      #此处用time()函数可以得到年月日,具体参照日期格式应用

4、关于group by 

  a:按部门分类查询,列出每个部门最高薪水的结果:

  select dempt,max(salary) as salary from staff group by dempt;

  b:按部门汇总总薪水:

  select dempt,sum(salary) as tatol_salary from staff group by dempt;

  c:将 WHERE 子句与 GROUP BY 子句一起使用,查询公司2010年入职的各个部门每个级别里的最高薪水

  select dempt,edlevel,max(salary) as max_salary from staff where year(hiredate)='2010' gro                                   #语句解析:2010年入职是条件(where),各个部门每个级别 分类汇总(group by),最高薪水是目的(salary),排序(order by)

  d:聚合的使用  

  寻找雇员数超过2个的部门的最高和最低薪水:

  select dempt,max(salary) as max,min(salary) as min from staff group by dempt having count(pname)>2 order by dempt;

  寻找雇员平均工资大于3000的部门的最高和最低薪水:

  select dempt,max(salary) as max,min(salary) as min from staff group by dempt having avg(salary)>3000 order by dempt;

本文持续更新。。

posted @ 2015-10-28 23:47  Tab_000  阅读(953)  评论(0)    收藏  举报