商量SQL compute by的應用剖析。本站提示廣大學習愛好者:(商量SQL compute by的應用剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是商量SQL compute by的應用剖析正文
GROUP BY子句有個缺陷,就是前往的成果集中只要算計數據,而沒有原始的具體記載。假如想在SQL SERVER中完成這項任務,可使用COMPUTE BY子句。COMPTE生成算計作為附加的匯總列湧現在成果集的最初。當與BY一路應用時,COMPUTE 子句在成果集內生成掌握中止和分類匯總。
以下 SELECT 語句應用簡略 COMPUTE 子句生成 titles 表中 price 及 advance 的乞降總計:
USE pubs
SELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price), SUM(advance)
以下查詢在 COMPUTE 子句中參加可選的 BY 症結字,以生成每一個組的小計:
USE pubs
SELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price), SUM(advance) BY type
此 SELECT 語句的成果用12 個成果集前往,六個組中的每一個組都有兩個成果集。每一個組的第一個成果集是一個行集,個中包括選擇列表中所要求的信息。每一個組的第二個成果集包括 COMPUTE 子句中兩個 SUM 函數的小計。
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 此時纰謬後面信息分組,而只對全體信息停止統計。
比擬 COMPUTE 和 GROUP BY
COMPUTE 和 GROUP BY 之間的差別匯總以下:
GROUP BY 生成單個成果集。每一個組都有一個只包括分組根據列和顯示該組子聚合的聚合函數的行。選擇列表只能包括分組根據列和聚合函數。
COMPUTE 生成多個成果集。一類成果集包括每一個組的明細行,個中包括選擇列表中的表達式。另外一類成果集包括組的子聚合,或 SELECT 語句
的總聚合。選擇列表可包括除分組根據列或聚合函數以外的其它表達式。聚合函數在 COMPUTE 子句中指定,而不是在選擇列表中。
以下查詢應用 GROUP BY 和聚合函數;該查詢將前往一個成果集,個中每一個組有一行,該行中包括該組的聚合小計:
USE pubs
SELECT type, SUM(price), SUM(advance)
FROM titles
GROUP BY type
解釋 在 COMPUTE 或 COMPUTE BY 子句中,不克不及包括 ntext、text 或 image 數據類型。