表:tab
id 姓名   部门名称 学历  职称  
1  张三   dept1    本科  初级
2  李四   dept2    本科  初级
3  王五   dept3    硕士  中级
4  张四   dept1    博士  高级
5  小红   dept1    本科  初级
6  小丽   dept2    硕士  中级根据上面的表实现分类统计实现如下结果:部门名称  本科人数 硕士人数 博士人数 初级职称人数 中级职称人数  高级职称人数
dept1       2         0        1         2             0             1
dept2       1         1        0         1             1             0
dept3       0         1        0         0             1             0
请教高手,该如何组织sql语句呢?

解决方案 »

  1.   

    select 部门名称,
    sum(if(学历='本科',1,0)) as 本科人数,
    Sum(if(学历='硕士',1,0)) as 硕士人数,
    Sum(if(学历='博士',1,0)) as 博士人数,
    sum(if(职称='初级',1,0)) as 初级职称人数,
    sum(if(职称='中级',1,0)) as 中级职称人数,
    sum(if(职称='高级',1,0)) as 高级职称人数
    from tab
    Group by 部门名称
      

  2.   

    select 部门名称,sum(case when 学历='本科' then 1 else 0 end) as 本科人数,
        Sum(case when 学历='硕士'then 1 else 0 end) as 硕士人数,
        Sum(case when 学历='博士'then 1 else 0 end) as 博士人数,
        sum(case when 职称='初级'then 1 else 0 end) as 初级职称人数,
        sum(case when 职称='中级'then 1 else 0 end) as 中级职称人数,
        sum(case when 职称='高级'then 1 else 0 end) as 高级职称人数
    from tt Group by 部门名称