回 帖 发 新 帖 刷新版面

主题:求sql语句


表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个回复)

沙发

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.班级

板凳

请问这个cast起什么作用啊

3 楼

cast 是个数据类型转化函数。呵呵

4 楼

什么类型转化为什么类型啊?

5 楼

举个例子吧。

cast(count(*) as numeric(18,2)) 
其中  count(*)  是整数,cast函数的作用就是把 整数 转化为 numeric(18,2),
numeric(18,2)是精度为2的实数。

我来回复

您尚未登录,请登录后再回复。点此登录或注册