求sql语句找出 成绩大于60 和 cj等于'合格' 的学号(50分)

  • 主题发起人 主题发起人 xiongdamaoslj
  • 开始时间 开始时间
X

xiongdamaoslj

Unregistered / Unconfirmed
GUEST, unregistred user!
学号 成绩 课程号
20032130 70 1
20032131 80 1
20032132 64 1
20032133 45 1
20032134 78 2
20032130 90 2
20032131 81 2
20032132 90 2
20032133 90 2
20032134 100 3
20032130 不合格 3
20032131 合格 3
20032132 合格 3
20032133 合格 3
20032134 不合格 3
20032135 合格 3
20032136 合格 3
 
select * from tb where CJ > 60
UNION
select * from tb where CJ = '合格'
试试看
 
楼上的肯定有错误,因为明显CJ是个字符串字段,这样的话100分的人就出不来了,要把它转成整形。
 
典型的数据库设计问题,分值和评分结果应该用两个字段,省级的考试我们都做了四五年了。
 
我自己想的是用一个临时表
insert into temp select * from 成绩表 where 成绩<'999';找出所有的整数
delete from temp where 成绩>60;删除及格成绩
insert into temp select * from 成绩 where 成绩='不及格';找出不及格的
select * from cj where 成绩表 not in (select 学号 from temp )
 
select * from table where (case when 成绩 in ('不合格','合格') then (case when val='合格' then 60 else 59 end)
else 成绩 end)>=60

上面是MSSQL的写法,如果是Access的话就要用IIF
 
select * from tb where ISNUMERIC(CJ) = 1 and cast(CJ As numeric(9, 2)) > 60
UNION
select * from tb where CJ = '合格'
根据weiliu提的意见修改了试试看
 
大学里面的课程分为考察与考核课
考察的以100分制计算
而考核只有合格与不合格
不是数据库设计问题,那并不时评分结果;而也是一门课程成绩
 
谢谢大家kk2000对了
 
后退
顶部