試驗目的:
一、學習查詢結果的排序
二、學習使用集函數的方法,完成統計
等查詢。
三、學習使用分組子句
一、學習查詢結果的排序
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、查詢學號、姓名,及其選修的課程名
平均分
代碼:
- select count(distinct sno)
- from sc
- select sage,count(sno)
- from student
- group by sage
- select sum(grade)
- from sc
- where cno='3'
- select sum(grade)
- from sc
- where sno='200215121'
- select avg(grade)
- from sc
- where sno='200215122'
- select avg(grade) 平均分,max(grade) 最高分
- from sc
- where cno='3'
- select * from student
- --字符串相加
- select '學號='+sno+'課程號='+cno
- from sc
- select max(sno)
- from student
- select * from student
- select cno,count(*)
- from sc
- group by cno
- select sc.cno,cname,count(*)
- from sc,course
- where sc.cno=course.cno
- group by sc.cno,cname
- select cname,avg(grade)
- from course,sc
- where course.cno=sc.cno
- group by cname