GROUP BY, HAVING, COMPUTE, ORDER BY 語句

來源:互聯網
上載者:User

GROUP BY用於對錶或者視圖的資料按欄位分組:

例如:

求各專業的學生人數:

USE StudentsSELECT 專業名, COUNT(*) AS '學生數'FROM XSGROUP BY 專業名

 

產生一個結果集,包括每個專業的男生人數,女生人數,總人數及學生總人數

USE StudentsSELECT 專業名, 性別, COUNT(*) AS '人數'FROM XSGROUP BY 專業名,性別WITH ROLLUP

 

電腦    0    3
電腦    1    8
電腦    NULL    11
通訊工程    0    1
通訊工程    1    1
通訊工程    NULL    2
NULL    NULL    13

帶有WITH ROLLUP將會產生一個合計列。

 

如果使用WITH CUBE:

 

USE StudentsSELECT 專業名, 性別, COUNT(*) AS '人數'FROM XSGROUP BY 專業名,性別WITH CUBE

結果如下:

電腦    0    3
通訊工程    0    1
NULL    0    4
電腦    1    8
通訊工程    1    1
NULL    1    9
NULL    NULL    13
電腦    NULL    11
通訊工程    NULL    2

CUBE操作符對GROUP BY 子句中的各列的所有可能組合均產生合計列。

 

HAVING

使用GROUP BY子句和彙總函式對資料進行分組後,還可以用HAVING子句對分組資料進行進一步的篩選。

例如: 尋找平均成績大於85分的

SELECT 學號, AVG(成績) AS '平均成績'FROM XS_KCGROUP BY 學號HAVING AVG(成績)>=85

 

當使用HAVING子句時,注意以下事項和原則:

  • HAVING子句只有與GROUP BY子句聯用才能對分組進行約束。只使用HAVING子句而不使用GROUP BY子句是沒有意義的。
  • 可以引用任何出現在挑選清單中的列。
  • 不要與HAVING子句一起使用ALL關鍵字,因為HAVING子句會忽略ALL關鍵字而返回只滿足自己條件的分組。

 

COMPUTE

COMPUTE子句用於分類匯總。COMPUTE將產生額外的合計列

USE StudentsSELECT 學號, 姓名, 出生時間FROM XSWHERE 專業名 = '通訊工程'COMPUTE COUNT(學號)

會在一個單獨的視窗裡面顯示COMPUTE裡面彙總函式的結果

 

ORDER BY

ORDER BY子句對查詢結果進行排序

系統預設的是ASC升序。要使用降序可以用DESC

將電腦專業的學生按出生日期先後排序

USE StudentsSELECT 學號, 姓名, 出生時間FROM XSWHERE 專業名 = '電腦'ORDER BY 出生時間

 

 

當使用子句和運算子摘要資料時,注意下面的推薦操作:

  • 對經常彙總的列進行索引可以提高查詢效率。例如,增加quantity列的索引能加快匯總操作的執行,甚至當使用了ROLLUP運算子時也是如此。
  • 在包含空值的列中避免使用彙總函式,因為結果集可能並沒有正確地返回你要查詢的資料。
    在結果集中使用ORDER BY子句以保證返回資料的排列順序。如果不使用ORDER BY子句,SQL Server就不保證結果順序。
  • 因為ROLLUP運算子比CUBE運算子更高效,所以只要可能就使用它。ROLLUP運算子之所以高效是因為它把摘要資料作為具體資料處理。CUBE運算子在執行時需要大量的運算,所以它需要更多的資源。
  • 使用COMPUTE或COMPUTE BY子句,是因為它們可以有助於查看和輸出用於測試應用程式的結果集。但是,它們產生的額外匯總記錄不符合關係型格式,所以它們不適合作為產品資料庫的輸出。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.