SQL Server group by的常用用法
此文章主要向大家講述的是SQL Server group by的幾種我們大家在實(shí)際應(yīng)用中經(jīng)常使用的用法,我前兩天在相關(guān)網(wǎng)站看見SQL Server group by的資料,覺得挺好,今天就拿出來(lái)供大家分享。
SQL Server Group by 是SQL Server 中常用的一種語(yǔ)法,語(yǔ)法如下:
- [ GROUP BY [ ALL ] group_by_expression [ ,...n ]
- [ WITH { CUBE | ROLLUP } ]
1、最常用的就是這種語(yǔ)法,如下:
- Select CategoryID, AVG(UnitPrice), COUNT(UnitPrice) FROM dbo.Products Where UnitPrice > 30GROUP BY CategoryID ORDER BY CategoryID DESC
這個(gè)語(yǔ)句查詢出,所有產(chǎn)品分類的產(chǎn)品平均單價(jià),單價(jià)計(jì)數(shù)。并且單價(jià)在 30 以上的記錄。
2、再看看這種語(yǔ)法,如下:
- Select CategoryID, AVG(DISTINCT UnitPrice), COUNT(DISTINCT UnitPrice) FROM dbo.
- Products Where UnitPrice > 30GROUP BY CategoryID ORDER BY CategoryID DESC
使用 DISTINCT 的時(shí)候,將會(huì)去除重復(fù)的價(jià)格平均單價(jià)。
3、如果希望在分類統(tǒng)計(jì)之后,再使用條件過(guò)濾,下面的語(yǔ)句可以做為參數(shù):
- Select CategoryID, SUM(UnitPrice) AS SumPriceFROM dbo.ProductsGROUP BY CategoryIDHAVING SUM(UnitPrice) > 300
HAVING 與 Where 語(yǔ)句類似,Where 是在分類之前過(guò)濾,而 HAVING 是在分類之后過(guò)濾。它和 Where 一樣使用 AND、OR、NOT、LIKE 組合使用。
4、如果希望再在分類統(tǒng)計(jì)中,添加匯總行,可以使用以下語(yǔ)句:
- Select CategoryID, SUM(UnitPrice), GROUPING(CategoryID) AS 'Grouping'FROM dbo.ProductsGROUP BY CategoryID WITH ROLLUPGrouping
這一列用于標(biāo)識(shí)出哪一行是匯總行。它使用 ROLLUP 操作添加匯總行。
5、如果使用 WITH CUBE 將會(huì)產(chǎn)生一個(gè)多維分類數(shù)據(jù)集,如下:
- Select CategoryID, SupplierID, SUM(UnitPrice) AS SumPriceFROM dbo.ProductsGROUP BY CategoryID, SupplierID WITH CUBE
它會(huì)產(chǎn)生一個(gè)交叉表,產(chǎn)生所有可能的組合匯總。
6、使用 ROLLUP CUBE 會(huì)產(chǎn)生一個(gè) NULL 空值,可以使用以下語(yǔ)法解決,如下:
- Select CASE WHEN (GROUPING(SupplierID) = 1) THEN '-1' ELSE SupplierID END AS SupplierID,
SUM(UnitPrice) AS QtySumFROM dbo.ProductsGROUP BY SupplierID WITH CUBE
它首先檢查當(dāng)前行是否為匯總行,如果是就可以設(shè)置一個(gè)值,這里設(shè)置為 '-1' 。
以上的相關(guān)內(nèi)容就是對(duì)SQL Server group by的幾種用法的介紹,望你能有所收獲。
【編輯推薦】
- SQL Server 2008數(shù)據(jù)格式修改時(shí)應(yīng)注意什么?
- SQL Server存儲(chǔ)過(guò)程之新手導(dǎo)航
- SQL Server 2005降級(jí)到2000的正確操作步驟
- SQL Server數(shù)據(jù)庫(kù)之查看SQL日志文件大小的命令
- SQL Server數(shù)據(jù)庫(kù)之一個(gè) SQL 2005 XML 查詢的例子