SQL面试题

此题目出处
有3个表S,C,SC
S(SNO,SNAME)代表(学号,姓名)
C(CNO,CNAME,CTEACHER)代表(课号,课名,教师)
SC(SNO,CNO,SCGRADE)代表(学号,课号成绩)
问题:
1,找出没选过“黎明”老师的所有学生姓名。
2,列出2门以上(含2门)不及格学生姓名及平均成绩。
3,即学过1号课程有学过2号课所有学生的姓名。
请用标准SQL语言写出答案,方言也行(请说明是使用什么方言)。
1、
 
select sname from s 
  join sc on (s.sno =sc.sno ) 
  join c on (c.cno = sc.cno) 
  where cteacher = '黎明' 

2、
 
select sname,avg(scgrade) from
  (
    select s.sname, sc.scgrade from s
    join sc on (s.sno =sc.son )
    where sno in 
    (
      select sno from sc 
      where scgrade<60 
      group by sno 
      haviing count(*)>=2
    )
  )
group by sno;
 


3
 
select sname from s 
where 
sno in (select sno from distinct sc where cno = 1) 
and 
sno in (select distinct sno from sc where cno = 2) 

======================================================================
此题目出处
一个简单的表TABLE   有100条以上的信息,其中包括:  
  产品                   颜色                           数量  
  产品1               红色                           123  
  产品1               蓝色                           126  
  产品2               蓝色                           103  
  产品2               红色                           NULL  
  产品2               红色                           89  
  产品1               红色                           203  
  。。。。。。。。。。。。  
  请用SQL语句完成以下问题:      
  1。按产品分类,仅列出各类商品中红色多于蓝色的商品名称及差额数量:    
  2。按产品分类,将数据按下列方式进行统计显示  
              产品                   红色                       蓝色
------------------------------------------
create table t
(
  cp varchar2(10),
  ys varchar2(5),
  sl number(5)
);

------------------------------------------
insert into t values('产品1','红色',123 );
insert into t values('产品1','蓝色',126 );
insert into t values('产品2','蓝色',103 );
insert into t values('产品2','红色',null );
insert into t values('产品2','红色',89 );
insert into t values('产品1','红色',203 );

------------------------------------------
1.
select t1.cp  from 
  (
    select cp, sum(sl) sum_sl  from t where ys='红色' group by cp
  ) t1
join 
  (
    select cp, sum(sl) sum_sl  from t where ys='蓝色' group by cp
  ) t2
on t1.cp=t2.cp
where t1.sum_sl >t2.sum_sl


2.
select t1.cp 产品, t1.sum_sl 红色, t2.sum_sl 蓝色  from 
  (
    select cp, sum(sl) sum_sl  from t where ys='红色' group by cp
  ) t1
join 
  (
    select cp, sum(sl) sum_sl  from t where ys='蓝色' group by cp
  ) t2
on t1.cp=t2.cp



======================================================================
题目请查看附件

你可能感兴趣的:(sql,mysql,面试,asp.net,asp)