查詢語(yǔ)句-單表查詢
回顧:?jiǎn)伪聿樵?BR> 一、選擇表中的若干列
二、選擇表中的若干元組
三、對(duì)查詢結(jié)果排序
四、使用集函數(shù)
五、對(duì)查詢結(jié)果分組
查詢語(yǔ)句-單表查詢
三、對(duì)查詢結(jié)果排序
使用ORDER BY子句
可以按一個(gè)或多個(gè)屬性列排序
升序:ASC;降序:DESC;缺省值為升序
當(dāng)排序列含空值時(shí)
ASC:排序列為空值的元組后顯示
DESC:排序列為空值的元組先顯示
查詢語(yǔ)句-單表查詢
[例24] 查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按分?jǐn)?shù)降序排列。
SELECT Sno,Grade
FROM SC
WHERE Cno = ’ 3 ’
ORDER BY Grade DESC;
查詢語(yǔ)句-單表查詢
[例25] 查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號(hào)升序排列,同一系中的學(xué)生按年齡降序排列。
SELECT *
FROM Student
ORDER BY Sdept,Sage DESC;
查詢語(yǔ)句-單表查詢
四、使用集函數(shù)
五類主要集函數(shù)
計(jì)數(shù)
COUNT([DISTINCT|ALL] *)
COUNT([DISTINCT|ALL] <列名>)
計(jì)算總和
SUM([DISTINCT|ALL] <列名>)
計(jì)算平均值
AVG([DISTINCT|ALL] <列名>)
查詢語(yǔ)句-單表查詢
求大值
MAX([DISTINCT|ALL] <列名>)
求小值
MIN([DISTINCT|ALL] <列名>)
DISTINCT短語(yǔ):在計(jì)算時(shí)要取消指定列中的重復(fù)值
ALL短語(yǔ):不取消重復(fù)值
ALL為缺省值
查詢語(yǔ)句-單表查詢
[例26] 查詢學(xué)生總?cè)藬?shù)。
SELECT COUNT(*)
FROM Student;
[例27] 查詢選修了課程的學(xué)生人數(shù)。
SELECT COUNT(DISTINCT Sno)
FROM SC;
注:用DISTINCT以避免重復(fù)計(jì)算學(xué)生人數(shù)
查詢語(yǔ)句-單表查詢
[例28] 計(jì)算1號(hào)課程的學(xué)生平均成績(jī)。
SELECT AVG(Grade)
FROM SC
WHERE Cno= ’ 1 ’;
[例29] 查詢選修1號(hào)課程的學(xué)生高分?jǐn)?shù)。
SELECT MAX(Grade)
FROM SC
WHER Cno= ’ 1 ’;
查詢語(yǔ)句-單表查詢
五、對(duì)查詢結(jié)果分組
使用GROUP BY子句分組
細(xì)化集函數(shù)的作用對(duì)象
未對(duì)查詢結(jié)果分組,集函數(shù)將作用于整個(gè)查詢結(jié)果
對(duì)查詢結(jié)果分組后,集函數(shù)將分別作用于每個(gè)組
查詢語(yǔ)句-單表查詢
[例30] 求各個(gè)課程號(hào)及相應(yīng)的選課人數(shù)。
SELECT Cno,COUNT(Sno)
FROM SC
GROUP BY Cno;
結(jié)果
Cno COUNT(Sno)
1 22
2 34
3 44
4 33
5 48
查詢語(yǔ)句-單表查詢
對(duì)查詢結(jié)果分組的說(shuō)明
GROUP BY子句的作用對(duì)象是查詢的中間結(jié)果表
分組方法:按指定的一列或多列值分組,值相等的為一組
使用GROUP BY子句后,SELECT子句的列名列表中只能出現(xiàn)分組屬性和集函數(shù)
查詢語(yǔ)句-單表查詢
使用HAVING短語(yǔ)篩選終輸出結(jié)果
[例31] 查詢選修了3門(mén)以上課程的學(xué)生學(xué)號(hào)。
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*) >3;
查詢語(yǔ)句-單表查詢
[例32] 查詢有3門(mén)以上課程是90分以上的學(xué)生的學(xué)號(hào)及(90分以上的)課程數(shù)
SELECT Sno, COUNT(*)
FROM SC
WHERE Grade>=90
GROUP BY Sno
HAVING COUNT(*)>=3;
回顧:?jiǎn)伪聿樵?BR> 一、選擇表中的若干列
二、選擇表中的若干元組
三、對(duì)查詢結(jié)果排序
四、使用集函數(shù)
五、對(duì)查詢結(jié)果分組
查詢語(yǔ)句-單表查詢
三、對(duì)查詢結(jié)果排序
使用ORDER BY子句
可以按一個(gè)或多個(gè)屬性列排序
升序:ASC;降序:DESC;缺省值為升序
當(dāng)排序列含空值時(shí)
ASC:排序列為空值的元組后顯示
DESC:排序列為空值的元組先顯示
查詢語(yǔ)句-單表查詢
[例24] 查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按分?jǐn)?shù)降序排列。
SELECT Sno,Grade
FROM SC
WHERE Cno = ’ 3 ’
ORDER BY Grade DESC;
查詢語(yǔ)句-單表查詢
[例25] 查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號(hào)升序排列,同一系中的學(xué)生按年齡降序排列。
SELECT *
FROM Student
ORDER BY Sdept,Sage DESC;
查詢語(yǔ)句-單表查詢
四、使用集函數(shù)
五類主要集函數(shù)
計(jì)數(shù)
COUNT([DISTINCT|ALL] *)
COUNT([DISTINCT|ALL] <列名>)
計(jì)算總和
SUM([DISTINCT|ALL] <列名>)
計(jì)算平均值
AVG([DISTINCT|ALL] <列名>)
查詢語(yǔ)句-單表查詢
求大值
MAX([DISTINCT|ALL] <列名>)
求小值
MIN([DISTINCT|ALL] <列名>)
DISTINCT短語(yǔ):在計(jì)算時(shí)要取消指定列中的重復(fù)值
ALL短語(yǔ):不取消重復(fù)值
ALL為缺省值
查詢語(yǔ)句-單表查詢
[例26] 查詢學(xué)生總?cè)藬?shù)。
SELECT COUNT(*)
FROM Student;
[例27] 查詢選修了課程的學(xué)生人數(shù)。
SELECT COUNT(DISTINCT Sno)
FROM SC;
注:用DISTINCT以避免重復(fù)計(jì)算學(xué)生人數(shù)
查詢語(yǔ)句-單表查詢
[例28] 計(jì)算1號(hào)課程的學(xué)生平均成績(jī)。
SELECT AVG(Grade)
FROM SC
WHERE Cno= ’ 1 ’;
[例29] 查詢選修1號(hào)課程的學(xué)生高分?jǐn)?shù)。
SELECT MAX(Grade)
FROM SC
WHER Cno= ’ 1 ’;
查詢語(yǔ)句-單表查詢
五、對(duì)查詢結(jié)果分組
使用GROUP BY子句分組
細(xì)化集函數(shù)的作用對(duì)象
未對(duì)查詢結(jié)果分組,集函數(shù)將作用于整個(gè)查詢結(jié)果
對(duì)查詢結(jié)果分組后,集函數(shù)將分別作用于每個(gè)組
查詢語(yǔ)句-單表查詢
[例30] 求各個(gè)課程號(hào)及相應(yīng)的選課人數(shù)。
SELECT Cno,COUNT(Sno)
FROM SC
GROUP BY Cno;
結(jié)果
Cno COUNT(Sno)
1 22
2 34
3 44
4 33
5 48
查詢語(yǔ)句-單表查詢
對(duì)查詢結(jié)果分組的說(shuō)明
GROUP BY子句的作用對(duì)象是查詢的中間結(jié)果表
分組方法:按指定的一列或多列值分組,值相等的為一組
使用GROUP BY子句后,SELECT子句的列名列表中只能出現(xiàn)分組屬性和集函數(shù)
查詢語(yǔ)句-單表查詢
使用HAVING短語(yǔ)篩選終輸出結(jié)果
[例31] 查詢選修了3門(mén)以上課程的學(xué)生學(xué)號(hào)。
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*) >3;
查詢語(yǔ)句-單表查詢
[例32] 查詢有3門(mén)以上課程是90分以上的學(xué)生的學(xué)號(hào)及(90分以上的)課程數(shù)
SELECT Sno, COUNT(*)
FROM SC
WHERE Grade>=90
GROUP BY Sno
HAVING COUNT(*)>=3;