转自http://www.cnblogs.com/ruanzuzhang/archive/2009/02/22/1395789.html
在同一个sql语句中写不同条件的Count数量 类似select count(1),count(2),count(3) from 表 每列都有不同条件的 count组成
其实有count很难实现
可以用sum 去实现它
例子如下
select xy, sum(case when jw_cljgh=1 then 1 else 0 end) as 留级,sum(case when jw_cljgh=2 then 1 else 0 end) as 复学 from xjgl,bjsjk where xjgl.bh=bjsjk.bh group by xy
所用到的表
| 表名: xjgl | |||||
| 概要说明: 学生违纪、异动信息表 | |||||
| 主键: (xsid、sj、jw_cljgh) | |||||
| 候选码:(xh、sj、jw_cljgh) | |||||
| 副键/外键: | |||||
|
| |||||
| 字段名 | 数据类型 | key | 能否为空 | 中文名称 | 资料来源 |
| xsid | int(4) |
| 不能 | 学生标识号 |
|
| xh | varchar(10) |
| 不能 | 学号 | 学号第1-2位为年级,3-4位为专业,第5位为层次(1研究生、2普通本科、3普通专科、4成教本科、5成教专科、6成教专升本、7成教高升专、8国际学院、9专升本),第6位为班级,7-9为序列号。一般学号的前6位为班号(有学籍异动的学生除外)。 |
| xm | varchar(24) |
|
| 姓名 |
|
| xn | varchar(4) |
| 不能 | 年度 | 2008、2009等 |
| xq | int |
| 不能 | 学期 | 1、2、3、4 |
| bh | varchar(8) |
|
| 当前所在班号 |
|
| sj | datetime(8) |
| 不能 | 时间 | 违纪或异动下文时间 |
| shij | varchar(1024) |
|
| 事件 |
|
| jw_cljgh | varchar(2) |
| 不能 | 处理结果编号 | 01:休学 02:复学 03:转入 04:转出 05:留级 06:保留学籍 07:退学 08:停学 09:劝其退学 10:自动退学11:死亡 12:警告处分13:记过处分 14:记大过处分 15:留校察看 16:开除学籍 17:勒令退学 |
| cljg | varchar(50) |
|
| 处理结果 |
|
| cldw | varchar(30) |
|
| 处理单位 |
|
| 表名: 班级信息表(bjsjk) | |||||
| 概要说明:存放班级相关信息 | |||||
| 主键 | |||||
| 副键/外键 | |||||
|
| |||||
| 字段名 | 数据类型 | key | 能否为空 | 中文名称 | 资料来源 |
| id | int(4) | Y | not | 表ID | 唯一 |
| bh | varchar(10) |
| not | 班级编号 |
|
| bjmc | varchar(50) |
|
| 班级名称 |
|
| xy | varchar(20) |
|
| 所属单位名称 |
|
| skxq | varchar(100) |
|
| 上课校区 | 1:中心校区 2:咸安校区 |
| bjrs | Int(4) |
|
| 班级人数 |
|
| xz | int(1) |
|
| 学制 | 3,4,5,6 |
| jw_xybh | varchar(1) |
|
| 学院编号 | 部门信息表 |
| sszybh | Varchar(10) |
|
| 所属专业编号 |
|
最后执行的结果
类似
留级 复学
医学院 104 4
计算机学院 5 35
本文介绍了一种在SQL查询中使用SUM函数替代COUNT函数的方法,以实现对不同条件的数量统计。通过具体实例展示了如何根据不同处理结果编号统计留级和复学的学生数。
273

被折叠的 条评论
为什么被折叠?



