Sqlserver中Compute By子句用法分析

來源:互聯網
上載者:User

使用Compute by子句和行統計函數(count,sum,max,avg,min等),可以統計排序中結果完全相同的列,統計值作為查詢結果以附加行的形式顯示,

文法:Compute avg|count|max|min|sum by 運算式

1、舉一個例子

比如有一個資料表:表名為person,三個欄位分別為 name,age,country

select name,country,age from person where ?? order by a compute sum(age),max(age),min(age) by country

這個語句在查詢時將資料按照country分組,然後分別顯示每組的詳細資料和統計資訊。結果可能如下:

name                  country                        age

張三                     中國                             16
李四                     中國                             21
王五                     中國                             24

sum      max      min

61            24        16

=================================

name                  country                        age

泰森                     美國                             20
布希                     美國                             24
蓋茨                     美國                             25

sum      max      min

69           25        20

=============================================

name                  country                        age

妓子                         日本                             12
完犢子                     日本                             14
豬生逆子                 日本                             15

sum      max      min

41          15        12

我們很容易看出她其實是在一個查詢結果中包含了三個子查詢(根據country不同而分的組),每個子查詢又包含兩個子查詢(一個是詳細資料,一個是統計資訊)

2、compute by 子句的規則:

(1)不能將distinct與行統計函數一起使用

(2)compute ??? by 子句中 ???出的列必須出現在挑選清單中

(3)不能在含有compute by 子句的語句中使用select into 子句,因為包括compute 子句的語句會產生不規則的行。

(4)如果使用了compute by子句,則必須使用order by 子句, 而且compute by子句中的列必須包含在order by 子句中,並且對列的前後順序和起始項都要一致(說白了compute by子句中的列必須是order by子句中列表的全部,或者前邊的連續幾個)。

(5)如果compute 省略了 by ,則order by 也可以省略

(6)如果compute by 子句包含多列時,會將一個組(第一個列分的組)分成若干個子組(利用後面的列),並對每層子組進行統計。

(7)使用多個compute by子句時,會分別按不同的組統計出結果。詳細資料還是按照正常的第一個分組方式顯示。

(8)compute by 子句中可以使用多個統計函數,他們互不影響

(9)compute by 子句中可以不包含by ,而只用compute  此時不對前面資訊分組,而只對全部資訊進行統計。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.