SQL Server group by的用法有很多
SQL Server group by在實際應(yīng)用中出現(xiàn)的頻率還是比較高的,此文章主要講述的是SQL Server group by的幾種用法,我們大家都知道Group by 作為SQL Server 數(shù)據(jù)庫中最為常用的語法之一。
其語法如下所示:
- [ GROUP BY [ ALL ] group_by_expression [ ,...n ]
- [ WITH { CUBE | ROLLUP } ]
- ]
1、最常用的就是這種語法,如下:Select CategoryID, AVG(UnitPrice), COUNT(UnitPrice) FROM dbo.Products Where UnitPrice > 30GROUP BY CategoryID ORDER BY CategoryID DESC這個語句查詢出,所有產(chǎn)品分類的產(chǎn)品平均單價,單價計數(shù)。并且單價在 30 以上的記錄。
2、再看看這種SQL Server group by語法,如下:Select CategoryID, AVG(DISTINCT UnitPrice), COUNT(DISTINCT UnitPrice) FROM dbo.Products Where UnitPrice > 30GROUP BY CategoryID ORDER BY CategoryID DESC使用 DISTINCT 的時候,將會去除重復(fù)的價格平均單價。
3、如果希望在分類統(tǒng)計之后,再使用條件過濾,下面的語句可以做為參數(shù):
Select CategoryID, SUM(UnitPrice) AS SumPriceFROM dbo.ProductsGROUP BY CategoryIDHAVING SUM(UnitPrice) > 300
HAVING 與 Where 語句類似,Where 是在分類之前過濾,而 HAVING 是在分類之后過濾。它和 Where 一樣使用 AND、OR、NOT、LIKE 組合使用。
4、如果希望再在分類統(tǒng)計中,添加匯總行,可以使用以下語句:Select CategoryID, SUM(UnitPrice), GROUPING(CategoryID) AS 'Grouping'FROM dbo.ProductsGROUP BY CategoryID WITH ROLLUPGrouping 這一列用于標(biāo)識出哪一行是匯總行。它使用 ROLLUP 操作添加匯總行。
5、如果使用 WITH CUBE 將會產(chǎn)生一個多維分類數(shù)據(jù)集,如下:Select CategoryID, SupplierID, SUM(UnitPrice) AS SumPriceFROM dbo.ProductsGROUP BY CategoryID, SupplierID WITH CUBE 它會產(chǎn)生一個交叉表,產(chǎn)生所有可能的組合匯總。
6、使用 ROLLUP CUBE 會產(chǎn)生一個 NULL 空值,可以使用以下語法解決,如下: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è)置一個值,這里設(shè)置為 '-1' 。
以上的相關(guān)內(nèi)容就是對SQL Server group by的幾種用法的介紹,望你能有所收獲。
【編輯推薦】
- SQL Server日期函數(shù)之獲得一個月中的實際天數(shù)
- SQL Server數(shù)據(jù)庫中用SQL來對表的欄位加注釋
- Sql Server日期格式化的正確操作步驟與其應(yīng)用代碼
- 實現(xiàn)SQL Server 2008 R2采用varchar字段類型中文亂碼
- 維護(hù)SQL Server數(shù)據(jù)庫表中的索引