Mệnh Đề group by nhiều cột trong sql, mệnh Đề group by trong sql server

     
Kiến thức công nghệHọc lập trìnhLập trình JavascriptCơ sở dữ liệuWORDPRESSMarketingTin học văn phòngKinh doanh online – MMOChia sẻ ITCông nuốm – tiện ích
*

Mệnh đề Group By

Mệnh đề GROUP BY phân chia tập hợp hiệu quả thành một hoặc các tập hòa hợp con. Mỗi tập hợp con có những giá trị và biểu thức chung. Trường đoản cú khóa GROUP BY được theo sau bởi một danh sách các cột, được hotline là grouped column. Từng grouped column tiêu giảm số sản phẩm của tập kết quả. Đối với mỗi grouped column, chỉ có một hàng. Mệnh đề GROUP BY tất cả thể có không ít hơn một grouped column.

Bạn đang xem: Mệnh Đề group by nhiều cột trong sql, mệnh Đề group by trong sql server

Cú pháp:

SELECT select_list FROM table_name GROUP BY column_name1,column_name2, ... ;Xét tình huống bảng WorkOrderRouting trong AdventureWorks2019. Tổng số giờ tài nguyên cho từng đơn đặt hàng công việc phải được xem toán. Để đã có được điều này, các bạn dạng ghi yêu cầu được nhóm theo số trang bị tự công việc, là cột WorkOrderID

Ví dụ phía bên dưới truy xuất với hiển thị tổng thời gian tài nguyên cho từng đơn hàng công việc cùng cùng với số trang bị tự công việc. Trong truy tìm vấn này, một hàm dựng sẵn mang tên SUM() được áp dụng để tính tổng. SUM() là một trong hàm tính tổng các phiên bản ghi của cột.

SELECT WorkOrderID,SUM(ActualResourceHrs) AS TotalHoursPerWorkOrder FROM Production.WorkOrderRouting GROUP BY WorkOrderIDCâu lệnh thực hiện sẽ trả về tổng thể các WorkOrder thuộc tổng giờ tài nguyên.


*

Mệnh đề GROUP BY cũng có thể sử dụng để kết hợp với các mệnh đề khác như:

GROUP BY cùng với WHERE

Mệnh đề WHERE có thể sử dụng cùng với mệnh đề GROUP BY để để ngăn cản các mặt hàng cho việc nhóm dữ liệu. Các hàng vừa lòng điều kiejen kiếm tìm kiểm sẽ được xét để nhóm lại. Gần như hàng không vừa lòng điều kiện kiếm tìm kiếm vẫn được loại bỏ trước khi quá trình grouping trả thành.

Ví dụ:

SELECt WorkOrderID,SUM(ActualResourceHrs) AS TotalHoursPerWorkOrder FROM Production.WorkOrderRouting WHERE WorkOrderID

GROUP BY cùng với NULL

Nếu cột nhóm cất giá trị rỗng, hàng này sẽ trở thành một nhóm riêng lẻ trong tập kết quả. Nếu như cột nhóm chứa nhiều hơn một cực hiếm NULL, thì những giá trị NULL được đưa vào trong 1 hàng duy nhất. Hãy cẩn thận bảng Production.Product. Có một số trong những hàng trong các số đó có quý hiếm NULL vào cột Class.

Xem thêm: Làm Sao Để Kiếm Tiền Online Từ Bán Áo Thun Trên Mạng, Bán Áo Thun Online Trên Platform Nổi Tiếng

Sử dụng GROUP BY mang đến truy vấn bảng sẽ cũng biến thành sử dụng các giá trị NULL. Ví dụ: mã bên dưới truy xuất cùng hiển thị giá trung bình của giá chỉ niêm yết cho từng Class

SELECT Class, AVG(ListPrice) AS "AverageListPrice" FROM Production.Product GROUP BY Class

*

GROUP BY với ALL

Từ khóa ALL rất có thể sử dụng cùng với mệnh đề GROUP BY. Nó chỉ có ý nghĩa sâu sắc khi SELECT có mệnh đề WHERE. Lúc ALL được sử dụng, nó bao hàm tất cả các nhóm mà lại mệnh đề GROUP BY tạo ra. Nó thậm chí bao hàm những team không đáp ứng các đk tìm kiếm.

Cú pháp:

SELECT FROM WHERE GROUP BY ALL Xét bảng Sales.SalesTerritory, bảng này có cột thương hiệu là Group chỉ ra rằng vị trí toạ độ của quanh vùng bán hàng. Đoạn code dưới sẽ đo lường và hiển thị tổng các deals bán được cho mỗi nhóm. Đầu ra cần được hiển thị tổng thể các nhóm bất kể họ có bán hàng hay không. Để giành được điều này, mã sử dụng GROUP BY cùng với ALL

SELECT , SUM(SalesYTD) AS "TotalSales" FROM Sales.SalesTerritory WHERE lượt thích "N%" OR lượt thích "E%" GROUP BY ALL

*

GROUP BY với HAVING

Mệnh đề HAVING được áp dụng với câu lệnh SELECT để chỉ định đk tìm kiếm cho 1 nhóm. Mệnh đề HAVING chuyển động như một mệnh đề WHERE ở phần đa nơi mà lại mệnh đề WHERE chẳng thể được áp dụng để kháng lại những hàm tổng hòa hợp như SUM (). Khi chúng ta đã tạo những nhóm với mệnh đề GROUP BY, chúng ta cũng có thể muốn thanh lọc thêm kết quả. Mệnh đề HAVING vận động như một cỗ lọc trên những dòng, giống như như biện pháp mệnh đề WHERE chuyển động như một cỗ lọc trên các hàng được trả về vì mệnh đề FROM.

Cú pháp:

SELECT FROM GROUP BY HAVING Ví dụ:

SELECT ,SUM(SalesYTD) AS "TotalSales" FROM Sales.SalesTerritory WHERE lượt thích "P%" GROUP BY ALL HAVING SUM (SalesYTD)

*

Tổng hợp tài liệu (Summarizing Data)

Mệnh đề GROUP BY cũng sử dụng những toán tử là CUBE và ROLLUP để trả về dữ liệu tóm tắt. Số cột trong mệnh đề GROUP BY xác định số sản phẩm tóm tắt trong tập trung quả. Những toán tử được diễn đạt như sau:

CUBE

CUBE là toán tử tổng hợp tạo nên một hàng khôn xiết tổng hợp. Ngoài các hàng thông thường được cung ứng bởi GROUP BY, nó cũng cung ứng tóm tắt những hàng nhưng mà mệnh đề GROUP BY sản xuất ra.

Hàng cầm tắt được hiển thị cho số đông sự kết hợp hoàn toàn có thể có của các nhóm là tập kết quả. Hàng Tóm tắt hiển thị NULL trong tập kết quả, tuy nhiên đồng thời trả về tất cả các cực hiếm cho hầu hết giá trị đó.

Cú pháp:

SELECT FROM GROUP BY WITH CUBEVí dụ:

Nghiệp vụ hiển thị tổng xuất bán cho mỗi quốc gia, ko kể Úc và Canada

SELECT Name, CountryRegionCode, SUM(SalesYTD) AS TotalSales FROM Sales.SalesTerritory WHERE Name "Australia" và Name "Canada" GROUP BY Name,CountryRegionCode WITH CUBE
CUBE như thể như một trong những phần mở rộng của mệnh đề GROUP BY. CUBE có thể chấp nhận được bạn chế tạo ra tổng phụ cho tất cả các tổ hợp group column được chỉ định và hướng dẫn trong mệnh đề GROUP BY.

ROLLUP

Ngoài các hàng thường thì được tạo do GROUP BY, nó cũng đưa những hàng tóm tắt vào tập trung quả. Nó tương tự như như toán tử CUBE, nhưng tạo nên một tập kết quả hiển thị các nhóm được bố trí theo sản phẩm tự phân cấp. Nó sắp tới xếp những nhóm từ thấp nhất cho cao nhất. Phân cấp nhóm trong công dụng phụ nằm trong vào sản phẩm tự mà các cột được team được chỉ định

Cú pháp:

SELECT <,> FROM GROUP BY Ví dụ:

SELECT , SUM(SalesYTD) AS TotalSales FROM Sales.SalesTerritory GROUP BY WITH ROLLUP

Chuyên mục: Domain Hosting