實驗三(2) SQL查詢(排序、集函數和分組子句的應用)

 

試驗目的:
一、學習查詢結果的排序
二、學習使用集函數的方法,完成統計

等查詢。
三、學習使用分組子句

 

一、學習查詢結果的排序

1、查詢全體學生信息,結果按照年齡降

序排序

select * 
from student
order by sage desc

2、查詢學生選修情況,結果先按照課程

號升序排序,再按成績降序排序

select * 
from sc
order by cno,grade desc

思考題:查詢學生姓名,及其選修的課

程名和成績,結果先按照課程名升序排

序,再按成績降序排序

1、排序是對查詢結果的排序,排序方法

有兩種,升序(默認 asc)和降序

(desc)。
2、當排序的屬性有多個時,優先排序的

放在前面,依次列出,中間用逗號隔開


3、當查詢結果是多個表時,利用連接查

詢(where 條件內把共同列相等),然

後對查詢結果排序。

 

二、集函數的應用
1、查詢student表內學生人數
select count(sno)
from student

select count(*)
from student

2、查詢有選修課程的學生人數
select count(distinct sno)
from sc

3、查詢3號課程的成績總分
select sum(grade)
from sc
where cno='3'

4、查詢學生年齡和
select sum(sage)
from student

5、查詢學生200215122所選修的課程的

平均分
select avg(grade)
from sc
where sno='200215122'

6、求3號課程的最高分
select max(grade)
from sc
where cno = '3'

練習:

1、查詢有幾門選修課被選修
select count(distinct cno)
from sc

2、查詢學生中男生人數

select count(sno)
from student
where ssex = '男'

3、查詢學生200215121所選修的課程成

績總分
select sum(grade)
from sc
where sno='200215121'

4、查詢3號課程的平均分
select avg(grade)
from sc
where cno='3'
思考題:

  1、查詢學生中各年齡段人數

select sage,count(sno)
from student
group by sage

2、查詢3號課程的平均分和最高分
select avg(grade) 平均分,max(grade)

最高分
from sc
where cno='3'
總結:

  1、集函數count(屬性名)計算個數,

注意distinct 屬性名的應用,取消重複

的行。屬性名列表可以是多個用字符串

連接(+)。
  2、sum(),avg()這兩個是對數值型屬

性進行的統計操作。
  3、max(),min()根據屬性(數值型的

或字符型的都可以)選擇最大的或最小

的。

 

三、分組group by子句的應用

1、查詢課程號及相應的選修人數
select cno,count(*)
from sc
group by cno

注意:列出結果一個是cno,一個是集函

數統計的結果,不能單獨列出不參與分

組的屬性。

練習:
1、查詢男生和女生人數(查詢性別及其

對應人數) 
select ssex,count(*)
from student
group by ssex

2、查詢各系名及其各系對應人數
select sdept,count(*)
from student 
group by sdept

3、查詢課程名及其平均分
select cname,avg(grade)
from course,sc
where course.cno=sc.cno
group by cname

思考題:
1、查詢課程號和課程名,及其選修人數
select sc.cno,cname,count(*)
from sc,course
where sc.cno=course.cno
group by sc.cno,cname

2、查詢學號、姓名,及其選修的課程名

平均分

 

 

代碼:

  1. select count(distinct sno)  
  2. from sc  
  3.   
  4. select sage,count(sno)  
  5. from student  
  6. group by sage  
  7.   
  8. select sum(grade)  
  9. from sc  
  10. where cno='3'  
  11.   
  12. select sum(grade)  
  13. from sc  
  14. where sno='200215121'  
  15.   
  16. select avg(grade)  
  17. from sc  
  18. where sno='200215122'  
  19.   
  20. select avg(grade) 平均分,max(grade) 最高分  
  21. from sc  
  22. where cno='3'  
  23.   
  24. select * from student  
  25.   
  26. --字符串相加  
  27. select '學號='+sno+'課程號='+cno  
  28. from sc  
  29.   
  30. select max(sno)  
  31. from student  
  32. select * from student  
  33.   
  34. select cno,count(*)  
  35. from sc  
  36. group by cno  
  37.   
  38. select sc.cno,cname,count(*)  
  39. from sc,course  
  40. where sc.cno=course.cno  
  41. group by sc.cno,cname  
  42.   
  43. select cname,avg(grade)  
  44. from course,sc  
  45. where course.cno=sc.cno  
  46. group by cname  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章