国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

淺析SQL的排序,分組,統(tǒng)計(jì)常用語(yǔ)句

2024-08-31 00:46:48
字體:
供稿:網(wǎng)友
1.使用排序使數(shù)據(jù)有序 
通常,你的所有數(shù)據(jù)真正需要的僅僅是按某種順序排列。SQL的ORDER BY語(yǔ)句可以以字母或數(shù)字順序組織數(shù)據(jù)。因此,相似的值按組排序在一起。然而,這個(gè)分組時(shí)排序的結(jié)果,并不是真的分組。ORDER BY顯示每條記錄而分組可能代表很多記錄。 
2.進(jìn)行分組除去重復(fù)值 
排序和分組之間的最大區(qū)別是:排序的數(shù)據(jù)顯示所有記錄(在限定標(biāo)準(zhǔn)范圍之內(nèi)),而分組數(shù)據(jù)不是顯示所有記錄。GROUP BY語(yǔ)句對(duì)于同樣的值只顯示一條記錄。例如,下面的語(yǔ)句中的GROUP BY語(yǔ)句對(duì)數(shù)據(jù)源中重復(fù)出現(xiàn)的數(shù)據(jù)只返回唯一的zip編碼列。 
SELECT ZIP FROM Customers GROUP BY ZIP
只包括由GROUP BY和SELECT語(yǔ)句共同定義的那些記錄,換句話說,SELECT列表必須滿足GROUP BY列表,但是有一個(gè)例外就是SELECT列表可以包含聚合函數(shù)(GROUP BY語(yǔ)句不允許使用聚合函數(shù))。需要注意的是GROUP BY語(yǔ)句不會(huì)對(duì)結(jié)果分組進(jìn)行排序。為了使分組按字母或數(shù)字有序排列,需要添加ORDER BY語(yǔ)句。此外,在GROUP BY語(yǔ)句中不能引用使用了別名的字段。分組欄目必須是潛在的數(shù)據(jù),但它們并不需要顯示在結(jié)果中。 
3.在分組之前進(jìn)行數(shù)據(jù)篩選 
你可以添加一個(gè)WHERE語(yǔ)句來篩選有GROUP BY所得分組中的數(shù)據(jù)。例如,下面的語(yǔ)句只返回肯塔基州顧客的唯一ZIP編碼列。 
SELECT ZIP FROM CustomersWHEREState = ’KY’ GROUP BY ZIP
必須注意的是WHERE語(yǔ)句是在GROUP BY語(yǔ)句求值之前進(jìn)行數(shù)據(jù)過濾的。與GROUP BY語(yǔ)句一樣,WHERE語(yǔ)句也不支持聚合函數(shù)。 
4.返回所有分組 
當(dāng)你使用WHERE語(yǔ)句過濾數(shù)據(jù)時(shí),結(jié)果分組中只顯示你指定的那些記錄,而符合分組定義但是不滿足過濾條件的數(shù)據(jù)不會(huì)包含在某個(gè)分組中。當(dāng)你想在分組中包含所有數(shù)據(jù)時(shí)添加關(guān)鍵字ALL即可,這時(shí)WHERE條件就不起作用。例如,在前面的例子中添加關(guān)鍵字ALL就會(huì)返回所有的ZIP分組,而不是僅在肯塔基州的那些。 
SELECT ZIP FROM CustomersWHEREState = ’KY’ GROUP BY ALL ZIP
這樣看來,這兩個(gè)語(yǔ)句存在沖突,你可能不會(huì)以這種方式使用關(guān)鍵字ALL。當(dāng)你使用聚合函數(shù)計(jì)算某一列時(shí),使用ALL關(guān)鍵字可能會(huì)很方便。例如,下面的語(yǔ)句計(jì)算每個(gè)肯塔基州ZIP中的顧客數(shù),同時(shí),還會(huì)顯示其它的ZIP值。 
SELECT ZIP, Count(ZIP) AS KYCustomersByZIP FROM 
CustomersWHEREState = ’KY’ GROUP BY ALL ZIP
結(jié)果分組包括潛在數(shù)據(jù)中的所有ZIP值,然而,對(duì)于那些不是肯塔基州ZIP分組的聚合列(KYCustomersByZIP)將會(huì)顯示0。遠(yuǎn)程查詢不支持GROUP BY ALL。 
5.分組后篩選數(shù)據(jù) 
WHERE語(yǔ)句在GROUP BY語(yǔ)句之前進(jìn)行計(jì)算。當(dāng)你需要在分組之后篩選數(shù)據(jù)時(shí),可以使用HAVING語(yǔ)句。通常情況下,WHERE語(yǔ)句和HAVING語(yǔ)句的返回結(jié)果是一樣的,但是值得注意的是這兩個(gè)語(yǔ)句不可互換。當(dāng)你迷惑時(shí),可以遵循下面的說明:使用WHERE語(yǔ)句過濾記錄,使用HAVING語(yǔ)句過濾分組。 
一般情況,你會(huì)使用HAVING語(yǔ)句和某個(gè)聚合函數(shù)計(jì)算一個(gè)分組。例如,下面的語(yǔ)句返回一個(gè)唯一的ZIP編碼列,但是可能不會(huì)包含潛在數(shù)據(jù)源中所有的ZIP。 
SELECT ZIP, Count(ZIP) AS CustomersByZIP FROM 
Customers GROUP BY ZIP HAVING Count(ZIP) = 1
只有那些包含一位顧客的分組顯示在結(jié)果中。 

共2頁(yè)上一頁(yè)12下一頁(yè)
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 舞阳县| 洛浦县| 宜宾县| 富阳市| 南部县| 阳朔县| 林州市| 清苑县| 观塘区| 红桥区| 竹北市| 四平市| 桐乡市| 浏阳市| 恭城| 开鲁县| 丰县| 寿光市| 常熟市| 内江市| 衢州市| 郴州市| 高唐县| 固安县| 株洲县| 尖扎县| 调兵山市| 凤凰县| 定陶县| 永修县| 阳新县| 共和县| 云安县| 盐津县| 巴塘县| 新巴尔虎右旗| 连南| 扶沟县| 靖远县| 开鲁县| 华亭县|