回覆列表
  • 1 # 使用者2602026100721

    使用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 此時不對前面資訊分組,而只對全部資訊進行統計。

  • 中秋節和大豐收的關聯?
  • 裝修如何判斷是不是承重牆?