主题:求sql语句
triumph
[专家分:160] 发布于 2006-06-24 21:19:00
表1 表2
学号 姓名 班级 学号 英语四级
11 aa 01 11 1
12 dd 01 12 0
13 cc 02 13 1
14 bb 02 14 1 1表示通过,0表示没有通过
想得到每个班级的英语通过率
表3
班级 总人数 通过人数 通过率
01 2 1 0.5
02 2 2 1
回复列表 (共5个回复)
沙发
cwb1128 [专家分:3120] 发布于 2006-06-25 08:52:00
select 表1.班级,count(*) 总人数,
(select count(*) from 表1 a, 表2 b where a.学号 = b.学号 and a.班级 =表1.班级 and b.英语四级='1') 通过人数,
cast((select count(*) from 表1 a, 表2 b where a.学号 = b.学号 and a.班级 =表1.班级 and b.英语四级='1')/cast(count(*) as numeric(18,2)) as numeric(18,2)) 通过率
from 表1 , 表2
where 表1.学号 = 表2.学号
group by 表1.班级
板凳
triumph [专家分:160] 发布于 2006-06-25 13:55:00
请问这个cast起什么作用啊
3 楼
cwb1128 [专家分:3120] 发布于 2006-07-04 14:17:00
cast 是个数据类型转化函数。呵呵
4 楼
triumph [专家分:160] 发布于 2006-07-04 17:46:00
什么类型转化为什么类型啊?
5 楼
cwb1128 [专家分:3120] 发布于 2006-07-04 19:35:00
举个例子吧。
cast(count(*) as numeric(18,2))
其中 count(*) 是整数,cast函数的作用就是把 整数 转化为 numeric(18,2),
numeric(18,2)是精度为2的实数。
我来回复