亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

SQL進行排序、分組、統計的10個新技巧

2024-07-21 02:44:41
字體:
來源:轉載
供稿:網友

以一種有意義的方式組織數據可能是一項挑戰。有時你需要的可能是一個簡單的排序,但是通常你需要做更多,你需要分組來進行分析和統計。幸運的是,SQL提供了大量語句和操作來進行排序,分組和摘要。下面的一些技巧將會幫助你識別什么時候排序,什么時候分組,什么時候以及如何統計。對要每條語句和操作的詳細信息請查看Books Online。

1.使用排序使數據有序

通常,你的所有數據真正需要的僅僅是按某種順序排列。SQL的ORDER BY語句可以以字母或數字順序組織數據。因此,相似的值按組排序在一起。然而,這個分組時排序的結果,并不是真的分組。ORDER BY顯示每條記錄而分組可能代表很多記錄。

2.進行分組除去重復值

排序和分組之間的最大區別是:排序的數據顯示所有記錄(在限定標準范圍之內),而分組數據不是顯示所有記錄。GROUP BY語句對于同樣的值只顯示一條記錄。例如,下面的語句中的GROUP BY語句對數據源中重復出現的數據只返回唯一的zip編碼列。

SELECT ZIP FROM Customers GROUP BY ZIP

只包括由GROUP BY和SELECT語句共同定義的那些記錄,換句話說,SELECT列表必須滿足GROUP BY列表,但是有一個例外就是SELECT列表可以包含聚合函數(GROUP BY語句不允許使用聚合函數)。需要注意的是GROUP BY語句不會對結果分組進行排序。為了使分組按字母或數字有序排列,需要添加ORDER BY語句。此外,在GROUP BY語句中不能引用使用了別名的字段。分組欄目必須是潛在的數據,但它們并不需要顯示在結果中。

3.在分組之前進行數據篩選

你可以添加一個WHERE語句來篩選有GROUP BY所得分組中的數據。例如,下面的語句只返回肯塔基州顧客的唯一ZIP編碼列。

SELECT ZIP FROM CustomersWHEREState = 'KY' GROUP BY ZIP
 
必須注意的是WHERE語句是在GROUP BY語句求值之前進行數據過濾的。與GROUP BY語句一樣,WHERE語句也不支持聚合函數。

4.返回所有分組

當你使用WHERE語句過濾數據時,結果分組中只顯示你指定的那些記錄,而符合分組定義但是不滿足過濾條件的數據不會包含在某個分組中。當你想在分組中包含所有數據時添加關鍵字ALL即可,這時WHERE條件就不起作用。例如,在前面的例子中添加關鍵字ALL就會返回所有的ZIP分組,而不是僅在肯塔基州的那些。

SELECT ZIP FROM CustomersWHEREState = 'KY' GROUP BY ALL ZIP

這樣看來,這兩個語句存在沖突,你可能不會以這種方式使用關鍵字ALL。當你使用聚合函數計算某一列時,使用ALL關鍵字可能會很方便。例如,下面的語句計算每個肯塔基州ZIP中的顧客數,同時,還會顯示其它的ZIP值。

SELECT ZIP, Count(ZIP) AS KYCustomersByZIP FROM
CustomersWHEREState = 'KY' GROUP BY ALL ZIP

結果分組包括潛在數據中的所有ZIP值,然而,對于那些不是肯塔基州ZIP分組的聚合列(KYCustomersByZIP)將會顯示0。遠程查詢不支持GROUP BY ALL。

5.分組后篩選數據

WHERE語句在GROUP BY語句之前進行計算。當你需要在分組之后篩選數據時,可以使用HAVING語句。通常情況下,WHERE語句和HAVING語句的返回結果是一樣的,但是值得注意的是這兩個語句不可互換。當你迷惑時,可以遵循下面的說明:使用WHERE語句過濾記錄,使用HAVING語句過濾分組。

一般情況,你會使用HAVING語句和某個聚合函數計算一個分組。例如,下面的語句返回一個唯一的ZIP編碼列,但是可能不會包含潛在數據源中所有的ZIP。

SELECT ZIP, Count(ZIP) AS CustomersByZIP FROM
Customers GROUP BY ZIP HAVING Count(ZIP) = 1

只有那些包含一位顧客的分組顯示在結果中。

6.進一步了解WHERE和HAVING語句

如果你對何時應該使用WHERE,何時使用HAVING仍舊很迷惑,請遵照下面的說明:

WHERE語句在GROUP BY語句之前;SQL會在分組之前計算WHERE語句。

HAVING語句在GROUP BY語句之后;SQL會在分組之后計算HAVING語句。

7.使用聚合函數統計分組數據

分組數據可以幫助我們分析數據,但是有時我們可能需要更多的信息而不僅僅是分組。你可以使用聚合函數來統計分組數據。例如,下面的語句顯示每批訂購單的總價錢。

SELECT OrderID, Sum(Cost * Quantity) AS OrderTotal
FROM Orders GROUP BY OrderID

對于其它的分組來說,SELECT和GROUP?。拢倭斜仨毱ヅ?。而SELECT語句包含聚合函數時這一規則是一個例外。

8.統計聚合數據

你可以繼續統計數據為每個分組顯示一個分類統計。SQL的ROLLUP操作符可以為每個分組顯示一個額外的分類統計。這個分類統計是使用聚合函數計算每個分組中的所有記錄得到的結果。下面的語句為每個分組計算OrderTotal:

SELECT Customer, OrderNumber, Sum(Cost * Quantity)

AS OrderTotal FROM Orders GROUP BY Customer,

OrderNumber WITH ROLLUP
 
對于有兩個分別為20和25 OderTotal值的分組,ROLLUP顯示一個OrderTotal值45。ROLLUP結果中的第一條記錄是唯一的,因為它是計算所有分組記錄,這個值是整個記錄集的總值。

ROLLUP在聚合函數中不支持 DISTINCT,也不支持GROUP BY ALL語句。

9.統計每個列

CUBE操作符比ROLLUP更進一步,它返回每個分組中重復值的個數。它的結果和ROLLUP相同,但是對每位客戶的每一列CUBE包含一個額外的記錄。下面的語句顯示每個分組的統計和額外每位客戶的統計。

SELECT Customer, OrderNumber, Sum(Cost * Quantity)
AS OrderTotal FROM Orders GROUP BY Customer,
OrderNumber WITH CUBE
 
CUBE可以給最綜合的統計。它不僅完成聚合和ROLLUP的功能,還可以計算定義分組的其它列,換句話說,CUBE統計每個可能的列組合。

CUBE不支持GROUP BY ALL語句。

10:對統計結果排序

當CUBE的結果令人迷惑時(它經常是這樣),可以添加一個GROUPING函數,如下所示:

SELECT GROUPING(Customer), OrderNumber,

Sum(Cost * Quantity) AS OrderTotal FROM Orders GROUP

BY Customer, OrderNumber WITH CUBE
 
結果中每行包含兩個額外的值:

值1表示左邊的值是一個統計值,是ROLLUP或CUBE的操作符。

值0表示左邊的值是一條由最初的GROUP BY語句產生的詳細記錄。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美精品中文字幕在线| 北条麻妃一区二区三区中文字幕| 成人黄色免费网站在线观看| 国产视频一区在线| 日本精品久久中文字幕佐佐木| 国产欧美一区二区三区久久人妖| 欧美日韩人人澡狠狠躁视频| 国语对白做受69| 亚洲国产精品电影在线观看| 九九热精品视频| 欧美伊久线香蕉线新在线| 最近2019中文字幕mv免费看| 久久久国产精品视频| 亚洲另类图片色| xvideos亚洲| 欧美大片免费观看| 亚洲国产精品va| 亚洲免费成人av电影| 国产精品免费久久久| 精品国产91乱高清在线观看| 91影院在线免费观看视频| 欧美视频中文字幕在线| 中文字幕日韩视频| 成人久久久久久久| 日韩av在线精品| 亚洲欧美激情视频| 亚洲女人天堂成人av在线| 日产精品99久久久久久| 日韩av在线免费观看| 欧美另类老肥妇| 91国产在线精品| 欧美多人爱爱视频网站| 日韩在线中文视频| 国产精品久久一区主播| 精品亚洲va在线va天堂资源站| 国产精品夜间视频香蕉| 国产一区二区在线免费视频| 91麻豆国产精品| 国产精品美腿一区在线看| 日韩精品极品毛片系列视频| 色先锋久久影院av| 国产一区二区精品丝袜| 国产91色在线|免| 日韩欧美高清视频| 国产97在线|亚洲| 国产欧美日韩91| 日韩中文字幕亚洲| 亚洲成色www8888| 亚洲91精品在线| 亚洲精品美女在线| 性色av一区二区三区| 日本精品久久电影| 久久中国妇女中文字幕| 亚洲精品电影网站| 亚洲色图综合网| 精品自拍视频在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲综合自拍一区| 欧美插天视频在线播放| 国产精品久久久久久亚洲调教| 91丝袜美腿美女视频网站| 欧美精品电影免费在线观看| 国产色婷婷国产综合在线理论片a| 国产视频精品在线| 51视频国产精品一区二区| 好吊成人免视频| 91精品视频在线免费观看| 热99精品只有里视频精品| 国产女人精品视频| 亚洲国产一区自拍| 欧美电影在线播放| 主播福利视频一区| 日韩中文字幕亚洲| 高清欧美性猛交xxxx黑人猛交| 国产日韩欧美影视| 精品亚洲国产视频| 黑人巨大精品欧美一区二区| 日韩欧美在线观看| 欧美在线影院在线视频| 欧美一级电影在线| 国产精品视频网址| 欧美日韩国产精品一区二区三区四区| 456亚洲影院| 91成人精品网站| 欧美日韩另类在线| 久久69精品久久久久久国产越南| 精品国偷自产在线视频99| 久久精品99久久久久久久久| 成人性生交大片免费观看嘿嘿视频| 国产精品揄拍500视频| xxxxx91麻豆| 亚洲成年网站在线观看| 成人h片在线播放免费网站| 久久久精品2019中文字幕神马| 国产在线一区二区三区| 欧美成人sm免费视频| www.亚洲成人| 国产精品96久久久久久| 亚洲精品白浆高清久久久久久| 日韩中文理论片| 精品久久久一区二区| 日韩电影免费在线观看| 色综合久久悠悠| 欧美超级乱淫片喷水| 最近中文字幕日韩精品| 国产亚洲欧洲黄色| 欧美一级黑人aaaaaaa做受| 日韩av综合网站| 欧美华人在线视频| 国产精品美女无圣光视频| 亚洲免费成人av电影| 91亚洲精华国产精华| 国产精品va在线播放| 亚洲精品国产suv| 欧美日韩国产精品专区| 91麻豆国产语对白在线观看| 欧美激情亚洲另类| 国产精品h在线观看| 自拍偷拍亚洲一区| 狠狠躁天天躁日日躁欧美| 91精品美女在线| 8050国产精品久久久久久| 亚洲第一区第一页| 欧美国产日韩精品| 欧美日韩国产综合视频在线观看中文| 国产精品久久久久久久一区探花| 成人免费福利在线| 97精品国产97久久久久久免费| 亚洲欧美日本伦理| 国产精品三级在线| 色综合91久久精品中文字幕| 日韩网站免费观看| 91久久久久久久久| 青青草99啪国产免费| 日韩成人激情在线| 91精品国产91久久久久福利| 国产极品jizzhd欧美| 92看片淫黄大片看国产片| 国产精品女视频| 日韩中文字幕在线视频| 亚洲精品中文字幕av| 久久久这里只有精品视频| 97不卡在线视频| 91精品国产99久久久久久| 国产亚洲精品美女久久久| 日日骚av一区| 国产一区二区免费| 亚洲午夜性刺激影院| 久久久精品2019中文字幕神马| 欧美性xxxx极品高清hd直播| 日韩专区中文字幕| 97视频在线播放| 日韩欧美成人免费视频| 欧美日韩在线视频首页| 91嫩草在线视频| 久久天天躁狠狠躁夜夜爽蜜月| 欧美久久精品午夜青青大伊人| 日韩av最新在线| 亚洲美女精品成人在线视频| 91亚洲va在线va天堂va国| 最新中文字幕亚洲| 国产日韩精品视频| 日韩中文字幕视频在线| 亚洲国产高清自拍|