程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 淺析SQL語句中GROUP BY的用法,sqlgroup

淺析SQL語句中GROUP BY的用法,sqlgroup

編輯:更多數據庫知識

淺析SQL語句中GROUP BY的用法,sqlgroup


GROUP BY 是分組查詢, 一般 GROUP BY 是和 聚合函數配合使用,你可以想想

你用了GROUP  BY 按  ITEM.ITEMNUM 這個字段分組,那其他字段內容不同,變成一對多又改如何顯示呢,比如下面所示

A  B
1  abc
1  bcd
1  asdfg

select A,B from table group by A
你說這樣查出來是什麼結果,

A  B
    abc
1  bcd
    asdfg

右邊3條如何變成一條,所以需要用到聚合函數,比如

select A,count(B) 數量 from table group by A
這樣的結果就是
A  數量
1   3

group by 有一個原則,就是 select 後面的所有列中,沒有使用聚合函數的列,必須出現在 group by 後面


sql語句中的group by要怎使用

1、最常用的就是這種語法,如下:Select CategoryID, AVG(UnitPrice), COUNT(UnitPrice) FROM dbo.Products Where UnitPrice > 30GROUP BY CategoryID ORDER BY CategoryID DESC這個語句查詢出,所有產品分類的產品平均單價,單價計數。並且單價在 30 以上的記錄。2、再看看這種語法,如下:Select CategoryID, AVG(DISTINCT UnitPrice), COUNT(DISTINCT UnitPrice) FROM dbo.Products Where UnitPrice > 30GROUP BY CategoryID ORDER BY CategoryID DESC使用 DISTINCT 的時候,將會去除重復的價格平均單價。3、如果希望在分類統計之後,再使用條件過濾,下面的語句可以做為參數:Select CategoryID, SUM(UnitPrice) AS SumPriceFROM dbo.ProductsGROUP BY CategoryIDHAVING SUM(UnitPrice) > 300HAVING 與 Where 語句類似,Where 是在分類之前過濾,而 HAVING 是在分類之後過濾。它和 Where 一樣使用 AND、OR、NOT、LIKE 組合使用。4、如果希望再在分類統計中,添加匯總行,可以使用以下語句:Select CategoryID, SUM(UnitPrice), GROUPING(CategoryID) AS 'Grouping'FROM dbo.ProductsGROUP BY CategoryID WITH ROLLUPGrouping 這一列用於標識出哪一行是匯總行。它使用 ROLLUP 操作添加匯總行。5、如果使用 WITH CUBE 將會產生一個多維分類數據集,如下:Select CategoryID, SupplierID, SUM(UnitPrice) AS SumPriceFROM dbo.ProductsGROUP BY CategoryID, SupplierID WITH CUBE 它會產生一個交叉表,產生所有可能的組合匯總。6、使用 ROLLUP CUBE 會產生一個 NULL 空值,可以使用以下語法解決,如下:Select CASE WHEN (GROUPING(SupplierID) = 1) THEN '-1' ELSE SupplierID END AS SupplierID, SUM(UnitPrice) AS QtySumFROM dbo.ProductsGROUP BY SupplierID WITH CUBE
 

sql語句中的group by要怎使用

group by 屬於聚合函數,查詢時要將被查詢的列聚合起來,例如:

C1 C2 C3
A 1 99
A 2 83
A 3 99
B 3 22
SELECT C1, SUM(C2) FROM T GROUP BY C1;
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved