面試題一SQL語句

面試題一SQL語句

學生表:

Student(sid,sname,sage,ssex) --學生編號,學生姓名,出生日期,學生性別

課程表:

Course(cid,cname,tid) --課程編號,課程名稱,教師編號

教師表

Teacher(tid,tname) --教師編號,教師姓名

成績表

Sc(sid,cid,score) --學生編號,課程編號,分數

SQL語句:

  1. 查詢“01”課程比“02”課程成績高的學生的信息及課程分數

    select a.*,b.score,c.score
    from student a
    left join sc b on a.sid=b.sid and b.cid='01'
    left join sc c on a.sid=c.sid and c.cid='02'
    where b.score>c.score
    
  2. 查詢平均成績大於等於60分的同學的學生編號,學生姓名和平均成績

    select a.sid,a.sname,avg(sc.score) avg_score
    from student a,sc
    where a.sid = sc.sid
    group by a.sid,a.sname
    having avg_score>=60
    order by a.sid;
    
  3. 查詢所有學生的學生編號,學生姓名,選課總數,所有課程訂單總成績

    select a.sid,a.sname,count(b.cid),sum(b.score)
    from student a
    left join sc b
    on a.sid=b.sid
    group by a.sid,a.sname
    order by a.sid
    
  4. 統計課程分01最高的前三名學生信息

    select a.sname,sc.score,sc.cid
    from student a
    join sc 
    on a.sid=sc.sid
    where sc.cid='01'
    order by sc.score desc limit 3;
    
  5. 統計每個學生的選課總數

    select a.sid,a.sname,count(b.cid)
    from student a
    left join sc b
    on a.sid=b.sid
    group by a.sid,a.sname
    
  6. 查詢沒學過“張三”老師授課的學生信息

    select a.*
    from student a
    left join sc b
    where not exists(
        select *
        from course c
        inner join teacher d
        on c.tid=d.tid
        inner join sc e
        on c.cid=e.cid
        where d.tname='張三'
        and e.sid = a.sid
    )
    group by 1,2,3,4;
    
  7. 查詢學過編號“01”並且也學過編號“02”的課程的學生信息

    select a.*
    from student a
    inner join sc b
    on a.sid = b.sid and b.cid ='01'
    inner join sc c
    on a.sid = c.sid on c.cid='02';
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章