create table sc(skey int ,sid varchar(10),cid varchar(10),score decimal(18,1),primary key(skey));
insert into sc values('1','01' , '01' , 80);
insert into sc values('2','01' , '02' , 90);
insert into sc values('3','01' , '03' , 99);
insert into sc values('4','02' , '01' , 70);
insert into sc values('5','02' , '02' , 60);
insert into sc values('6','02' , '03' , 80);
insert into sc values('7','03' , '01' , 80);
insert into sc values('8','03' , '02' , 80);
insert into sc values('9','03' , '03' , 80);
insert into sc values('10','04' , '01' , 50);
insert into sc values('11','04' , '02' , 30);
insert into sc values('12','04' , '03' , 20);
insert into sc values('13','05' , '01' , 76);
insert into sc values('14','05' , '02' , 87);
insert into sc values('15','06' , '01' , 31);
insert into sc values('16','06' , '03' , 34);
insert into sc values('17','07' , '02' , 89);
insert into sc values('18','07' , '03' , 98);
SELECT b.cid, b.cname,
sum(CASE WHEN score >= 60 THEN 1 ELSE 0 END)/COUNT(*) AS '及格率'
FROM course b, sc c
where b.cid=c.cid group by b.cid ,cname;
SELECT b.cid, b.cname,
sum(CASE WHEN score >= 60 THEN 1 ELSE 0 END)*1.0/COUNT(*) AS '及格率' -- 必须要乘1.0?????
FROM course b, sc c
where b.cid=c.cid group by b.cid ,cname;
sum(CASE WHEN score >= 60 THEN 1 ELSE 0 END)*1.0/COUNT(*)
这样写才会对,不乘1.0 算出的及格率是0。不明白为什么?
整数相除的结果依然为整数,*1.0改变了数据类型。