SQL中的ORDER BY排序,聚集函數,GROUP BY分組


一.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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM