一.ORDER BY排序
用戶可以用ORDER BY子句對查詢結果按照一個或多個屬性列的升序(ASC)從小到大,降序(DESC)從大到小排列。默認值為升序
例:查詢選修3號課程的學生的學號和成績,查詢結果按分數的降序排列
select Sno,Grade from SC where Cno=‘3’ order by Grade DESC;
注意:對於空值,排序時顯示的次序由具體系統實現來決定。如按升序排,含空值的元組最后顯示;按降序排,空值的元組最先顯示。
二.聚集函數
為了進一步方便用戶,增強檢索功能,SQL提供了許多聚集函數,主要有
COUNT(*) | 統計元組個數 |
COUNT(DISTINCT |ALL 列名) | 統計一列中值的個數 |
SUM(DISTINCT | ALL 列名) | 計算一列值的總和 |
AVG(DISTINCT | ALL 列名) | 計算一列值的總和(此列必須是數值型) |
MAX(DISTINCT | ALL 列名) | 求一列值中的最大值 |
AVG(DISTINCT | ALL 列名) | 求一列值中的最小值 |
例如:查詢學生的總人數
select COUNT(*) FROM Student;
注意:當聚集函數遇到空值時,除COUNT(*)外,都跳過空值而只處理非空值。WHERE子句中是不能用聚集函數作為條件表達式的。聚集函數只能用於SELECT子句和GROUP BY中的having子句。
三.GROUP BY子句
例如:查詢各個課程號及相應的選課人數
select Cno,COUNT(sNO) FROM SC GROUP BY Cno;
注意:WHERE子句與HAVING短句的區別在於作用對象不同。WHERE 子句作用於基本表或試圖。而HAVING短語作用於組,從組中選擇滿足條件的。
例如:查詢平均成績大於90分的學生學號和平均成績
select Sno,AVG(Grade) FROM SC GROUP BY Sno HAVING AVG (Grade)>=90;