中国人寿总经理助理:求解access 统计问题

来源:百度文库 编辑:中科新闻网 时间:2024/05/10 06:20:32
求:表1 内容如下
批次 地区 姓名 单位名称 专业 证书编号 级别
1 怀化 张三 怀化妇幼 护理 2006-14-43000001 1级
2 娄底 李四 娄底妇幼 护理 2006-14-43000002 1级
1 怀化 王五 怀化妇幼 药剂 2006-05-43000001 1级
2 怀化 苏六 怀化妇幼 药剂 2006-05-43000002 2级

其中字段:地区、专业为多种分类;级别 就分1级和2级

要得到以下几种结果:
(1):地区 1级人数 2级人数
怀化 2 1
娄底 1 0

(2):专业 总人数 1级人数 2级人数
护理 2 2 0
药剂 2 1 1

(3):批次 1级人数 2级人数 总人数
1 2 0 2
2 1 1 2

求以上结果如何实现?最好就用SQL语句,呵呵~~~
本人是菜鸟最好高手把代码写出来时顺便做下解释 先谢谢了!!

select 地区,sum(case when 级别='1级' then 1 else 0 end)as [1级人数],sum(case when 级别='2级' then 1 else 0 end)as [2级人数] from t1 group by 地区

select 专业,count(级别)as [总人数],sum(case when 级别='2级' then 1 else 0 end)as [1级人数],sum(case when 级别='2级' then 1 else 0 end)as [2级人数] from t1 group by 专业

select 批次,count(级别)as [总人数],sum(case when 级别='2级' then 1 else 0 end)as [1级人数],sum(case when 级别='2级' then 1 else 0 end)as [2级人数] from t1 group by 批次

三条语句都差不多
group by 是分组,就是把group后面指定的字段的所有信息都放在一条记录里,比如group by地区,则每个地区只显示一条记录
count()函数是统计该组的记录总数,就是统计该地区有多少条记录
case when 级别='2级' then 1 else 0 end 是判断,意思是当级别等于'2级'时输出1否则输出0,语法是(when条件then输出),然后用sum()求和函数统计总和,结果就是'2级'的总人数