SQL练习1:统计班级男女生人数

1 有如下表格和数据:
 2     ID          Name       Class      Sex
 3     ----------- ---------- ---------- ----
 4     1           张1         一班         男
 5     2           张2         一班         男
 6     3           张3         二班         女
 7     4           张4         一班         男
 8     5           张5         二班         女
 9     6           张6         二班         女
10     7           张7         二班         男
11     8           张8         一班         女
12 现要求通过SELECT语句查询出如下结果:
13 
14     班级         男           女
15     ---------- ----------- -----------
16     二班         1           3
17     一班         3           1
18 
19 
20 use studb
21 go
22 create table TestTable
23 (
24     ID int identity(1,1primary key,
25     [Name] varchar(10),
26     [Class] varchar(10),
27     Sex char(2)
28 )
29 
30 insert TestTable values('张1','一班','')
31 insert TestTable values('张2','一班','')
32 insert TestTable values('张3','二班','')
33 insert TestTable values('张4','一班','')
34 insert TestTable values('张5','二班','')
35 insert TestTable values('张6','二班','')
36 insert TestTable values('张7','二班','')
37 insert TestTable values('张8','一班','')
38 
39 select * from TestTable
40 
41 --答案1:
42 select class 班级, count(case when Sex='' then 1 endas 男,
43 count(case when Sex='' then 1 endas 女 
44 from TestTable group by class
45 --答案2:
46 SELECT 班级, SUM(男) AS 男, SUM(女) AS 女 FROM (
47 SELECT Class AS 班级, COUNT(Sex) AS 男, 0 AS 女 FROM TestTable
48 WHERE Sex=''
49 GROUP BY Class
50 UNION
51 SELECT Class AS 班级, 0 AS 男, COUNT(Sex) AS 女 FROM TestTable
52 WHERE Sex=''
53 GROUP BY Class
54 ) A
55 GROUP BY 班级

 

本文引用自:http://www.cnblogs.com/seerlin/archive/2009/02/17/1392230.html

posted on 2011-09-05 15:27  啊風  阅读(11794)  评论(0编辑  收藏  举报