首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

写SQL话语

2013-06-19 
写SQL语句S(sno,sname)C(cno,cname)SC(sno,cno,grade)这是三张表,大家应该都知道吧写出每门课程成绩大于90

写SQL语句
S(sno,sname)
C(cno,cname)
SC(sno,cno,grade)

这是三张表,大家应该都知道吧

写出每门课程成绩大于90分的人数的select语句,

我看到答案了,但是思路还是比较混乱,请大牛们帮我理一理思路地给出答案

比如,第一步,想到什么
      第二部,想到什么
      然后。。。。


尽量把思路写出来,非常地感谢啦!!!!
[解决办法]

select c.cname, sum(case when sc.grade>=90 then 1 else 0 end) as upper_90_num
from c join sc on c.cno=sc.cno
group by c.cname;

[解决办法]
逆向法

1.从 sc 表中 找出 存在 课程成绩小于90 分的 sno。

2.从sc 表中剔除 第一步得到的sno,剩下的就是所有成绩大于90分的。

3. count求数量。

sql如下:
select count(distinct sno) cnt
  from sc t
 where not exists (select 1
          from sc t1
         where t1.grade < 90
           and t.sno = t1.sno);

热点排行