SQL經典50句(後25)

26、查詢每門課程被選修的學生數  
   sql

select c#,count(S#) from sc group by C#;

27、查詢出只選修了一門課程的所有學生的學號和姓名  
  
select SC.S#,Student.Sname,count(C#) AS 選課數  
  from SC ,Student  
  where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;

28、查詢男生、女生人數  
   
Select count(Ssex) as 男生人數 from Student group by Ssex having Ssex='男';  
    Select count(Ssex) as 女生人數 from Student group by Ssex having Ssex='女';
 
29、查詢姓的學生名單  
   
SELECT Sname FROM Student WHERE Sname like '張%';

30、查詢同名同性學生名單,並統計同名人數  
 
select Sname,count(*) from Student group by Sname having  count(*)>1;

311981年出生的學生名單(注:Student表中Sage列的類型是datetime)  
    
select Sname,  CONVERT(char (11),DATEPART(year,Sage)) as age  
    from student  
    where  CONVERT(char(11),DATEPART(year,Sage))='1981';

32、查詢每門課程的平均成績,結果按平均成績升序排列,平均成績相同時,按課程號降序排列  
  
Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;

33、查詢平均成績大於85的全部學生的學號、姓名和平均成績  
    
select Sname,SC.S# ,avg(score)  
    from Student,SC  
    where Student.S#=SC.S# group by SC.S#,Sname having    avg(score)>85;

34、查詢課程名稱爲數據庫,且分數低於60的學生姓名和分數  
   
Select Sname,isnull(score,0)  
    from Student,SC,Course  
    where SC.S#=Student.S# and SC.C#=Course.C# and  Course.Cname='數據庫'and score <60;

35、查詢全部學生的選課狀況;  
    
SELECT SC.S#,SC.C#,Sname,Cname  
    FROM SC,Student,Course  
    where SC.S#=Student.S# and SC.C#=Course.C# ;

36、查詢任何一門課程成績在70分以上的姓名、課程名稱和分數;  
   
SELECT  distinct student.S#,student.Sname,SC.C#,SC.score  
    FROM student,Sc  
    WHERE SC.score>=70 AND SC.S#=student.S#;

37、查詢不及格的課程,並按課程號從大到小排列  
    
select c# from sc where scor e <60 order by C# ;

38、查詢課程編號爲003且課程成績在80分以上的學生的學號和姓名;  
  
select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003';

39、求選了課程的學生人數  
    
select count(*) from sc;

40、查詢選修葉平老師所授課程的學生中,成績最高的學生姓名及其成績  
    
select Student.Sname,score  
    from Student,SC,Course C,Teacher  
    where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='葉平' and SC.score=(select max(score)from SC where C#=C.C# );

41、查詢各個課程及相應的選修人數  
   
select count(*) from sc group by C#;

42、查詢不一樣課程成績相同的學生的學號、課程號、學生成績  
 
select distinct  A.S#,B.score from SC A  ,SC B where A.Score=B.Score and A.C# <>B.C# ;

43、查詢每門功成績最好的前兩名  
   
SELECT t1.S# as 學生ID,t1.C# as 課程ID,Score as 分數  
      FROM SC t1  
      WHERE score IN (SELECT TOP 2 score  
              FROM SC  
              WHERE t1.C#= C#  
            ORDER BY score DESC  
              )  
      ORDER BY t1.C#;

44、統計每門課程的學生選修人數(超過10人的課程才統計)。要求輸出課程號和選修人數,查詢結果按人數降序排列,查詢結果按人數降序排列,若人數相同,按課程號升序排列  
   
select  C# as 課程號,count(*) as 人數  
    from  sc  
    group  by  C#  
    order  by  count(*) desc,c#

45、檢索至少選修兩門課程的學生學號  
   
select  S#  
    from  sc  
    group  by  s#  
    having  count(*)  >  =  2

46、查詢所有學生都選修的課程的課程號和課程名  
    
select  C#,Cname  
    from  Course  
    where  C#  in  (select  c#  from  sc group  by  c#)

47、查詢沒學過葉平老師講授的任一門課程的學生姓名  
   
select Sname from Student where S# not in (select S# from Course,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C# and Tname='葉平');

48、查詢兩門以上不及格課程的同窗的學號及其平均成績  
    
select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score <60 group by S# having count(*)>2)group by S#;

49、檢索004課程分數小於60,按分數降序排列的同窗學號  
   
select S# from SC where C#='004'and score <60 order by score desc;

50、刪除002同窗的001課程的成績  
delete from Sc where S#='001'and C#='001';
 

補充:SQL左右鏈接 數據庫

left join :左鏈接,返回左表中全部的記錄以及右表中鏈接字段相等的記錄。 c#

right join :右鏈接,返回右表中全部的記錄以及左表中鏈接字段相等的記錄。 spa

inner join: 內鏈接,又叫等值鏈接,只返回兩個表中鏈接字段相等的行。 code

兩個表:    class

A(id,name)    date

數據:(1,張三)(2,李四)(3,王五)    select

B(id,name)    im

數據:(1,學生)(2,老師)(4,校長)      統計

左鏈接結果:   

select A.*,B.* from A left join B on A.id=B.id;   

張三 1    學生   

李四 2    老師   

王五 NULL NULL  

右連接結果:   

select A.*,B.* from A right join B on A.id=B.id;   

1    張三 學生   

2    李四 老師   

NULL NULL 4 校長   

****************   

補充:下面這種狀況就會用到外鏈接   

好比有兩個表一個是用戶表,一個是交易記錄表,若是我要查詢每一個用戶的交易記錄就要用到左外外鏈接,由於不是每一個用戶都有交易記錄。   

用到左外鏈接後,有交易記錄的信息就會顯示,沒有的就顯示NULL,就像上面我舉得例子同樣。   

若是不用外鏈接的話,好比【王五】沒有交易記錄的話,那麼用戶表裏的【王五】的信息就不會顯示,就失去了查詢全部用戶交易記錄的意義了。  

相關文章
相關標籤/搜索