MỆNH ĐỀ GROUP BY TRONG SQL

  -  
SQL Server: đội theo lệnh vào SQL Server hoàn toàn có thể bạn chưa biếtVí dụ về mệnh đề GROUP BY vào SQL ServerVí dụ về mệnh đề HAVING trong SQL ServerSử dụng HAVING cùng với hàm COUNT trong SQL ServerCâu Lệnh GROUP BY vào SQL

“group by vào sql” là trường đoản cú khóa đang rất được mọi người thân thương và chú ý đến. Sát bên đó, hostingvietnam.vn là kênh chuyên share về bản tin của sản phẩm tính, công nghệ, cũng như chia sẻ các thủ thuật app hữu ích cho những người dùng. Hôm nay , hostingvietnam.vn sẽ giới thiệu đến các bạn nội dung bài viết Mệnh đề GROUP BY trong SQL

Câu lệnh sqlMệnh đề GROUP BY trong SQL

Tuyên ba CategorySQL

Mệnh đề GROUP BY vào SQL

*

Câu lệnh group by trong sql được thực hiện cùng với câu lệnh SELECT để bố trí dữ liệu thống tuyệt nhất thành các nhóm, hàm này trong ngữ điệu sql đứng sau mệnh đề WHERE trong câu lệnh SELECT cùng trước mệnh đề ORDER BY.SQL và những mệnh đề như GROUP BY đang đóng một vai trò đặc biệt như nhau trong DBMS.

Bạn đang xem: Mệnh đề group by trong sql

Biết cách thực hiện GROUP BY khi sử dụng ngôn ngữ SQL là 1 điều phải thiết.

Không gồm câu lệnh thừa như thế nào của một hàm các đại lý dữ liệu, chỉ là chúng ta không cần thực hiện chúng hoặc áp dụng chúng không đúng mục đích.Mệnh đề group by sql được tiếp tế vì những hàm tổng đúng theo (như SUM) trả về một tập hợp các giá trị vào cột đó mỗi lúc chúng được gọi, dựa vào lệnh sql GROUP BY chúng ta có thể tính tổng những giá trị.giá trị cho mỗi nhóm lẻ trong cột.Cách làm ngôn từ như sau:

CHỌN tên_chỉ_mạch, SUM (tên_mạch) TỪ tên_bảng NHÓM THEO tên_mục

Ví dụ, shop chúng tôi có bạn dạng ghi “HOCPHISINHVIEN” như sau:

TÔIMƯỜItuổi tácMONHOCHOCPHI
Đầu tiênHoàng21IT4
2Nhu22TCNH5
3Treo21CK3
4Hoàng21CK3
5Treo21IT4
6Ngân22TCNH5

Muốn biết tổng chi phí khóa học của từng sinh viên, họ phải áp dụng câu truy tìm vấn sau:SQL> SELECT TEN, SUM (HOCPHI) FROM HOCPHISINHVIENGROUP BY TEN;Sau đó, nó sẽ tạo nên ra một bảng nội dung new như sau:

MƯỜISUM (HOCPHI)
Hoàng7
Nhu5
Treo7
Ngân5

Việc áp dụng mệnh đề nhìn bao quát khá đơn giản, chỉ cần bạn nắm rõ cú pháp, không cần biết thuộc lòng vẫn rất có thể sử dụng được, đây cũng rất có thể xem là một trong những lợi cố kỉnh của người tạo ra ngôn ngữ truy tìm vấn.Truy vấn SQL.Một số hàm tổng vừa lòng thường đi kèm với Group by khi lập trình SQL.

Theo bí quyết cấu trúc, group by trong sever sql thường đi kèm với một số chức năng nhất định, rõ ràng nhất là:

AVG: Hàm AVG vào SQL dùng làm tìm quý giá trung bình của một trường gồm nhiều bạn dạng ghi không giống nhau, lúc được áp dụng với mệnh đề group by vào sql, hàm đã trả về quý hiếm trung bình của nhóm cột.COUNT: Hàm COUNT là hàm dễ dàng và đơn giản nhất và rất có ích để đếm số lượng phiên bản ghi được muốn đợi được trả về vì chưng một câu lệnh SELECT.Khi được sử dụng, mệnh đề này đã trả về số lần xuất hiện trong một cột.MAX: Hàm MAX vào SQL được thực hiện để tìm giá trị lớn số 1 trong một tập hòa hợp các phiên bản ghi, fan dùng hoàn toàn có thể tìm giá bán trị lớn số 1 của toàn bộ các bạn dạng ghi được hỗ trợ bởi tên với mỗi mệnh đề nhóm.bởi sever sqlMIN: Tương tự, hàm MIN trả về giá chỉ trị nhỏ dại nhất trong một tổ cột lúc được kết hợp với nhóm bằng SQL.

Vậy nội dung của group by sql là gì thì chắc hẳn rằng sau bài viết này kín đáo đã được nhảy mí, người dùng có thể tự mình tìm hiểu bao giờ sử dụng group by sql, việc vận dụng ngôn ngữ máy tính sẽ trở nên thuận lợi hơn khi chúng ta thành thành thạo nó.

Ví dụ về đội theo câu lệnh đến lập trình sql

Một vài lấy ví dụ vềcâu lệnh group by in sqlđể bạn đọc tham khảo.

Ví dụ 1:Nhóm theolệnhsqlServer

CHỌN cot1, cot2,… cot_N,

Ham_tong (cũi)

TỪ bang

NHÓM THEO cot1, cot2,… cot_N;

Ghi chú:

– Cot1, cot2,… cotN: là giá trị không có trong hàm tổng và buộc phải nằm vào mệnh đề GROUP BY.

– Hàm_tong: rất có thể là những hàm như MIN, MAX, COUNT, SUM, AVG

– Bang: bảng để lấy bảng ghi và nên có ít nhất 1 bảng dưới FROM.chỉ dẫn

– WHERE dieukien: đk so khớp vừa lòng điều kiện WHERE.mệnh đề

Ví dụ 2:Nhómcú pháptheo sql Serversử dụng hàm SUM.Dưới đấy là một ví dụ áp dụng hàm SUM nhằm tính tổng nhằm trả về số thiết bị cùng tổng con số theo số thiết bị.

CHỌN maso_thietbi, SUM (soluong) NHƯ “Bài hát so luong”

TỪ thiết kế

GROUP BY maso_thietbi

Ví dụ 3:Nhómcú pháptheo sql Serversử dụng hàm MIN.Cú pháp này thực hiện hàm min MIN để cung cấp cho bạn kết quả tên thành phầm và con số tối thiểu của tên sản phẩm đó.

CHỌN ten_sanpham, MIN (Soluong) NHƯ “Giải quyết được rất nhiều nhất”

TỪ sanpham

GROUP BY ten_san pham

Ví dụ 4:Nhóm theocú phápSQLtrong Access

CHỌN list trường

Bảng TỪ

Tiêu chí WHERE

Ghi chú:

– list trường là tên gọi của một hoặc nhiều trường yêu cầu truy xuất

– Table là tên gọi của bảng yêu cầu lấy các bạn dạng ghi

Tiêu chí là đk cho WHERE.mệnh đề

– danh sách nhóm là tên của buổi tối đa 10 trường được sử dụng để nhóm các phiên bản ghi theo lắp thêm tự từ cung cấp nhóm cao nhất đến cấp thấp nhất.3. để ý về đội của.chỉ huy

– Mệnh đề GROUP BY luôn luôn phải tuân theo điều kiện của mệnh đề WHERE, tức là sau lúc viết ngừng mệnh đề WHERE, bạn hãy xuống loại đến mệnh đề GROUP BY.– Mệnh đề ORDER BY luôn luôn theo sau mệnh đề GROUP BY ví như được thực hiện trong cú pháp tróc nã vấn dữ liệu.

Trên đây là những chia sẻ của cửa hàng chúng tôi vềcâu lệnhgroup bycủa ngữ điệu sql, một câu lệnh dùng kết phù hợp với mệnh đề WHERE để nhóm trong sql và một dữ liệu.Hy vọng rằng trường đoản cú những thông tin về cú pháp trên, chúng ta có thể học và thực hành thực tế với kết quả tốt rộng khi sử dụng ngôn ngữ SQL.

Lĩnh vực công nghệ thông tin, đặc biệt là cấu trúc dữ liệu ngày càng đặc biệt và trở nên quan trọng hơn so với nhiều doanh nghiệp.Nhận thấy tầm đặc biệt của SQL, Thảo Nguyên – người có nhiều năm học hành và làm việc trong lĩnh vực công nghệ thông tin đã quyết định thành lập trang website để share những kiến ​​thức với kinh nghiệm của chính mình trong nghành nghề dịch vụ này.Lĩnh vực SQL dành riêng cho những các bạn đam mê và muốn nắm rõ hơn về nghành nghề này.

*

Cú pháp mệnh đề liên hợp trong SQL → Lệnh update SQL → Lệnh chèn trong SQL →

Mệnh đề GROUP BY của SQL Server

Mệnh đề GROUP BY vào SQL Server được cho phép bạn sắp đến xếp các hàng của tróc nã vấn theo nhóm.Nhóm được xác định bởi những cột mà bạn chỉ định vào mệnh đề GROUP BY.Thông thường, GROUP BY được sử dụng để tính tổng theo điều kiện, đếm các bản ghi thỏa mãn các điều kiện nhất định hoặc tìm tài liệu MIN, MAX.

Để góp bạn thuận lợi làm theo phong cách sử dụng GROUP BY vào SQL server và để gia công ví dụ, chúng tôi sẽ sử dụng bảng dữ liệu sau trong cục bộ bài viết.

Bảng mang tên làQuantrimang.com, tất cả 4 cột IDchuyenmuc, Muccon, Chuyenmuclon, Sobai với 6 hàng như sau:

+------------+----------+-------------+-------+ |IDChuyenmuc | Muccon |Chuyenmuclon | Sobai | +------------+----------+-------------+-------+ | 1 |SQL Server|Lap trinh | 101 | | 2 |Facebook |Mang xa hoi | 152 | | 3 |Python |Lap trinh | 101 | | 4 |JavaScript|Lap trinh | 122 | | 5 |Chrome |Web | 94 | | 6 |Instagram |Mang xa hoi | 165 | +------------+----------+-------------+-------+Cú pháp mệnh đề GROUP BY trong SQL Server

SELECT bieu_thuc1, bieu_thuc2,... Bieu_thuc_n, ham_tong_hop (bieu_thuc) FROM ten_bang GROUP BY bieu_thuc1, bieu_thuc2,...;Tên biến hóa hoặc quý hiếm biến:

biu_thuc1, bieu_thuc2,… bieu_thuc_n:Biểu thức không bên trong hàm tổng hòa hợp và cần nằm trong mệnh đề GROUP BY.ham_tong_hop:Có thể là những hàm như SUM, COUNT, MIN, MAX hoặc AVG.ten_bang:Bảng để lấy bạn dạng ghi, phải có ít nhất 1 bảng vào mệnh đề FROM.WHERE dieukien:Tùy chọn.Đây là điều kiện mà bạn dạng ghi phải đáp ứng nhu cầu để được chọn.

Ví dụ – thực hiện SUM.chức năng

SELECT Chuyenmuclon, SUM(Sobai) AS "Tong" FROM GROUP BY Chuyenmuclon;Ví dụ này thực hiện hàm SUM để trả về tênChuyenmuclonvà tổng số bài bác báo (Sobai) (theo tên chuyên mục lớn).

Vì bạnchỉ địnhmột cột (Chuyenmuclon) trong câu lệnh SELECT chứ không phải trong hàm SUM, bạn sẽ phải áp dụng mệnh đề GROUP BY.

Sau đó, công ty chúng tôi có bảng kết quả sau:

+--------------+------+ | Chuyenmuclon | Tong | +--------------+------+ |Lap trinh | 324 | |Mang xa hoi | 317 | |Web | 94 | +--------------+------+Ví dụ – sử dụng COUNT.chức năng

SELECT COUNT(Chuyenmuclon), Chuyenmuclon FROM WHERE Chuyenmuclon = "Lap trinh" GROUP BY Chuyenmuclon;Trong ví dụ như này, hàm COUNT đã trả về số chu kỳ của Chương trình:

+------+--------------+ | | Chuyenmuclon | +------+--------------+ | 3 | Lap trinh | +------+--------------+Nếu bạn không thích lấy tên cột nhưng mà chỉ trả về con số mục con, hãy chạy lệnh sau:

SELECT COUNT(Chuyenmuclon) FROM WHERE Chuyenmuclon = "Lap trinh" GROUP BY Chuyenmuclon;Kết quả trả về đang chỉ bao gồm số 3.Ví dụ – áp dụng MIN.chức năng

SELECT Chuyenmuclon, MIN(Sobai) AS "So luong it nhat" FROM GROUP BY Chuyenmuclon;Mệnh đề GROUP BY được sử dụng với hàm MIN nghỉ ngơi trên vẫn trả về Chuyenmuclon và số lượng bài viết tối thiểu của mục mập đó.

*

Ví dụ – thực hiện MAX.chức năng

SELECT Chuyenmuclon, MAX(Sobai) AS "So bai cao nhat" FROM GROUP BY Chuyenmuclon;Ví dụ sau cùng này trả về tên của Chuyenmuclon và số bài bác đăng số 1 của danh mục.

*

Bài trước: Điều kiện tồn trên trong SQL Server

Bài tiếp theo: Mệnh đề HAVING vào SQL Server

Mệnh đề WHERE vào SQLMệnh đề SQL vps FROMMệnh đề WHERE trong SQL ServerMệnh đề ORDER BY của SQL ServerĐiều khiếu nại HOẶC trong SQL ServerMệnh đề DISTINCT của SQL ServerĐiều khiếu nại LÀ NULL trong SQL Server

SQL Server: nhóm theo lệnh vào SQL Server hoàn toàn có thể bạn chưa biết

Trong chỉ dẫn này, bạn sẽ tìm hiểuGROUP BY,GROUPING SET,CUBE,ROLLUPvà các điều khoảnHAVINGtrong SQL hệ thống để sắp xếp hồ sơ theo nhóm.Mệnh đề GROUP BY của SQL Server

Giới thiệu về mệnh đề GROUP BY vào SQL Server

CácGROUP BYkhoản SQL Server có thể chấp nhận được bạn sắp xếp các hồ sơ của một truy hỏi vấn do nhóm.Nhóm được xác định bởi những cột mà bạn chỉ định trongGROUP BY.

Sau trên đây minh họa cú pháp mệnh đềGROUP BYtrong SQL Server:

SELECT select_listFROM table_nameGROUP BY column_name1, column_name2 ,...;SQLCopy

Trong truy nã vấn này, mệnh đềGROUP BYđã chế tạo ra một nhóm cho từng tổ hòa hợp giá trị trong các cột được liệt kê trong mệnh đềGROUP BY.

Xem lấy ví dụ như sau:

SELECT customer_id, YEAR (order_date) order_yearFROM sales.ordersWHERE customer_id IN (1, 2)ORDER BY customer_id;SQLCopy

Đây là kết quả:

*

Trong ví dụ này, chúng tôi đã tầm nã xuất thông tin id người tiêu dùng và năm đặt hàng của những người sử dụng có id 1 với 2.

Như chúng ta cũng có thể thấy trong đầu ra, quý khách hàng có id 1 đã đặt một deals vào năm năm nhâm thìn và hai đơn hàng vào năm 2018. Quý khách có id hai đang đặt hai giao dịch vào năm 2017 với một deals vào năm 2018.

Hãy thêm mệnh đềGROUP BYvào tầm nã vấn trên cùng xem kết quả:

SELECT customer_id, YEAR (order_date) order_yearFROM sales.ordersWHERE customer_id IN (1, 2)GROUP BY customer_id, YEAR (order_date)ORDER BY customer_id;SQLCopy

Đây là kết quả:

*

Mệnh đề đãGROUP BYsắp xếp ba phiên bản ghi khách hàng đầu tiên có id 1 thành hai nhóm và ba phiên bản ghi quý khách tiếp theo bao gồm id 2 thành hai team khác với sự phối kết hợp duy nhất của id người sử dụng và thường niên đặt phòng.

Về khía cạnh chức năng, mệnh đềGROUP BYtrong tầm nã vấn trên tạo ra ra hiệu quả giống như truy vấn vấn sau bằng cách sử dụngDISTINCT:

SELECT DISTINCT customer_id, YEAR (order_date) order_yearFROM sales.ordersWHERE customer_id IN (1, 2)ORDER BY customer_id;SQLCopy

Đây là kết quả:

*

Mệnh đề GROUP BY của SQL Server cùng hàm tổng hợp

Trong thực tế, những mệnh đềGROUP BYthường được áp dụng với tính năng tổng hợp nhằm tạo report tóm tắt.

Một hàm tập hợp tiến hành phép tính trên một đội nhóm và trả về một quý hiếm duy nhất cho mỗi nhóm.Ví dụ, hàmCOUNT()trả về số lượng phiên bản ghi trong mỗi nhóm.Các hàm tập đúng theo thường được sử dụng khác làSUM()(tổng),AVG()(trung bình),MIN()(tối thiểu),MAX()(tối đa).

Xem thêm: Học Wordpress Từ A Đến Z - Hướng Dẫn Làm Website Bằng Wordpress Từ A Đến Z

Mệnh đềGROUP BYsắp xếp các bản ghi thành những nhóm và thực hiện các chức năng đã đặt (đếm, buổi tối thiểu, về tối đa, trung bình, tổng, v.v.) cho mỗi nhóm.

Ví dụ: truy hỏi vấn sau trả về số lượng đơn đặt hàng của chúng ta theo năm:

SELECT customer_id, YEAR (order_date) order_year, COUNT (order_id) order_placedFROM sales.ordersWHERE customer_id IN (1, 2)GROUP BY customer_id, YEAR (order_date)ORDER BY customer_id; SQLCopy

Đây là kết quả:

*

Nếu bạn muốn thêm bất kỳ cột hoặc biểu thức nào không được liệt kê trongGROUP BY, bạn phải áp dụng cột đó làm đầu vào cho hàm set.

Nếu không, bạn sẽ gặp lỗi vì không tồn tại gì đảm bảo an toàn rằng cột hoặc biểu thức đã trả về một quý hiếm duy nhất cho từng nhóm.

Ví dụ: truy tìm vấn sau sẽ không thành công:

SELECT customer_id, YEAR (order_date) order_year, order_statusFROM sales.ordersWHERE customer_id IN (1, 2)GROUP BY customer_id, YEAR (order_date)ORDER BY customer_id;SQLCopy

Ví dụ về mệnh đề GROUP BY trong SQL Server

Hãy lấy thêm một số trong những ví dụ để hiểu cách hoạt động của mệnh đềGROUP BY.

Sử dụng mệnh đề GROUP BY với hàm COUNT () trong SQL Server

Truy vấn sau trả về số lượng người sử dụng ở từng thành phố:

SELECT city, COUNT (customer_id) customer_countFROM sales.customersGROUP BY cityORDER BY city;SQLCopy

Đây là kết quả:

*

Trong lấy một ví dụ này, mệnh đềGROUP BYnhóm các quý khách lại cùng nhau theo thành phố và hàmCOUNT()trả về số lượng người sử dụng ở mỗi thành phố.

Tương tự, tầm nã vấn sau trả về số lượng người tiêu dùng theo tiểu bang cùng thành phố.

SELECT city, state, COUNT (customer_id) customer_countFROM sales.customersGROUP BY state, cityORDER BY city, state;SQLCopy

Đây là kết quả:

*
*

TẬP HỢP NHÓM trong SQL Server

Giới thiệu về GROUPING SETS trong SQL Server

Theo định nghĩaGROUPING SETSlà một đội các cột mà bạn nhóm. Thông thường, một tầm nã vấn với cùng 1 tập hợp xác minh một tập hợp đội duy nhất.

Ví dụ: tróc nã vấn sau xác minh một tập hòa hợp nhóm bao gồm thương hiệu và danh mục được biểu lộ là(brand, category). Truy vấn trả về số tiền bán sản phẩm được đội theo chữ tín và danh mục:

SELECT brand, category, SUM (sales) salesFROM sales.sales_summaryGROUP BY brand, categoryORDER BY brand, category;SQLCopy

*

Truy vấn sau đây trả về số lượng bán hàng theo yêu quý hiệu. Nó xác minh một tập thích hợp nhóm(brand):

SELECT brand, SUM (sales) salesFROM sales.sales_summaryGROUP BY brandORDER BY brand;SQLCopy

*

Truy vấn sau đây trả về số lượng bán hàng theo danh mục. Nó quan niệm một tập thích hợp nhóm(category):

SELECT category, SUM (sales) salesFROM sales.sales_summaryGROUP BY categoryORDER BY category;SQLCopy

*

Truy vấn sau khẳng định một tập hợp đội trống(). Nó trả về số tiền bán hàng cho tất cả các uy tín và danh mục.

SELECT SUM (sales) salesFROM sales.sales_summary;SQLCopy

*

Bốn truy vấn vấn trên trả về tứ tập kết quả với tứ nhóm:

(brand, category)(brand)(category)()SQLCopy

Để giành được tập hợp kết quả thống độc nhất với tài liệu tổng hòa hợp cho toàn bộ các tập đúng theo nhóm, bạn có thể sử dụng toán tửUNION ALL.

Vì toán tửUNION ALLyêu cầu tất cả tập hợp công dụng có thuộc số cột, bạn cần thêm cộtNULLvào danh sách các truy vấn như sau:

SELECT brand, category, SUM (sales) salesFROM sales.sales_summaryGROUP BY brand, categoryUNION ALLSELECT brand, NULL, SUM (sales) salesFROM sales.sales_summaryGROUP BY brandUNION ALLSELECT NULL, category, SUM (sales) salesFROM sales.sales_summaryGROUP BY categoryUNION ALLSELECT NULL, NULL, SUM (sales)FROM sales.sales_summaryORDER BY brand, category;SQLCopy

*

Truy vấn tạo thành một hiệu quả duy độc nhất vô nhị với các tổng đúng theo cho tất cả các nhóm nhóm như chúng tôi mong đợi.

Tuy nhiên, nó có hai vấn đề lớn:

Truy vấn tương đối dài.Truy vấn chậm bởi vì SQL vps cần tiến hành bốn truy vấn nhỏ và phối kết hợp các tập hợp tác dụng thành một.

Để xung khắc phục hầu hết sự chũm này, SQL Server hỗ trợ một mệnh đề bé của mệnh đềGROUP BYđược gọi làGROUPING SETS.

GROUPING SETSđịnh nghĩa các nhóm trong cùng một truy vấn. Sau đấy là cú pháp bình thường củaGROUPING SETS:

SELECT column1, column2, aggregate_function (column3)FROM table_nameGROUP BY GROUPING SETS ( (column1, column2), (column1), (column2), ());SQLCopy

Truy vấn này tạo ra bốn đội như sau:

(column1, column2)(column1)(column2)()SQLCopy

Bạn có thể sử dụngGROUPING SETSđể viết lại truy hỏi vấn mang dữ liệu bán sản phẩm như sau:

SELECTbrand,category,SUM (sales) salesFROMsales.sales_summaryGROUP BYGROUPING SETS ((brand, category),(brand),(category),())ORDER BYbrand,category;SQLCopy

Như bạn có thể thấy, truy vấn tạo thành ra công dụng giống như truy nã vấn thực hiện toán tửUNION ALL. Mặc dù nhiên, tầm nã vấn này đọc dễ dàng hơn nhiều và tất yếu là kết quả hơn.

Tìm hiểu thêm vềGROUPING SETtrong SQL vps ở nội dung bài viết sau:

*

Mệnh đề CUBE trong SQL Server

Giới thiệu về mệnh đề CUBE vào SQL Server

GROUPING SETSđịnh nghĩa những nhóm dữ liệu trong một truy vấn vấn. Ví dụ: tầm nã vấn sau quan niệm một tập nhóm nhất được cam kết hiệu là(brand):

SELECT brand, SUM(sales)FROM sales.sales_summaryGROUP BY brand;SQLCopy

Nếu bạn chưa tuân theo hướng dẫnGROUPING SETS, chúng ta có thể tạo bảngsales.sales_summarybằng cách thực hiện truy vấn sau:

SELECT b.brand_name AS brand, c.category_name AS category, p.model_year, round( SUM ( quantity * i.list_price * (1 - discount) ), 0 ) sales INTO sales.sales_summaryFROM sales.order_items iINNER JOIN production.products p ON p.product_id = i.product_idINNER JOIN production.brands b ON b.brand_id = p.brand_idINNER JOIN production.categories c ON c.category_id = p.category_idGROUP BY b.brand_name, c.category_name, p.model_yearORDER BY b.brand_name, c.category_name, p.model_year;SQLCopy

Ngay cả khi truy vấn sau không sử dụng mệnh đềGROUP BY, nó tạo thành một tập hợp nhóm trống được ký kết hiệu là().

SELECT SUM(sales)FROM sales.sales_summary;SQLCopy

CUBElà một mệnh đề nhỏ của mệnh đềGROUP BYcho phép bạn tạo những nhóm. Dưới đây minh họa cú pháp bình thường củaCUBE:

SELECT d1, d2, d3, aggregate_function (c4)FROM table_nameGROUP BY CUBE (d1, d2, d3);SQLCopy

Trong cú pháp này, hàmCUBEtạo tất cả các nhóm có thể dựa trên các cột d1, d2 và d3 mà bạn chỉ định vào mệnh đềCUBE.

Truy vấn bên trên trả về cùng một tập hợp tác dụng như tầm nã vấn sau, thực hiện hàm GROUPING SETS:

SELECT d1, d2, d3, aggregate_function (c4)FROM table_nameGROUP BY GROUPING SETS ( (d1,d2,d3), (d1,d2), (d1,d3), (d2,d3), (d1), (d2), (d3), () );SQLCopy

Nếu các bạn cóNcột được chỉ định trongCUBE, các bạn sẽ có 2Ntập team kết quả.

Có thể giảm số lượng tập đội kết quả bằng phương pháp sử dụngCUBEmột phần như được hiển thị trong truy tìm vấn sau:

SELECT d1, d2, d3, aggregate_function (c4)FROM table_nameGROUP BY d1, CUBE (d2, d3);SQLCopy

Trong trường vừa lòng này, truy vấn tạo nên bốn tập thích hợp nhóm bởi vì chỉ bao gồm hai cột được hướng dẫn và chỉ định trongCUBE.

Ví dụ về mệnh đề CUBE trong SQL Server

Câu lệnh sau sử dụngCUBEđể tạo tư tập nhóm:

(brand, category)(brand)(category)()

SELECT brand, category, SUM (sales) salesFROM sales.sales_summaryGROUP BY CUBE(brand, category);SQLCopy

Đây là kết quả đầu ra:

*
*

Mệnh đề ROLLUP vào SQL Server

Giới thiệu về mệnh đề ROLLUP vào SQL Server

ROLLUPtrong SQL Server là 1 trong mệnh đề bé của mệnh đềGROUP BYcung cấp biện pháp viết tắt để khẳng định nhiềuGROUPING SETS. Rất khác nhưCUBE– tạo các tập đội với toàn bộ các phối kết hợp của những cột, ROLLUP không tạo toàn bộ các tập hòa hợp nhóm rất có thể dựa trên các cột lắp thêm nguyên.

Khi tạo các tập hợp nhóm, ROLLUP giả định một hệ thống phân cung cấp giữa các cột sản phẩm nguyên còn chỉ tạo các tập hợp team dựa trên khối hệ thống phân cấp này.

ROLLUP thường được áp dụng để tạo ra tổng số phụ (subtotals) với tổng số (totals) cho mục tiêu báo cáo.

Hãy cẩn thận ví dụ sau đây: mệnh đềCUBE (d1,d2,d3)sẽ xác minh tám tập hợp team như sau:

(d1, d2, d3)(d1, d2)(d2, d3)(d1, d3)(d1)(d2)(d3)()SQLCopy

Nhưng mệnh đềROLLUP(d1,d2,d3)chỉ tạo nên bốn tập hợp đội (giả sử phân cấpd1 > d2 > d3) như sau:

(d1, d2, d3)(d1, d2)(d1)()SQLCopy

Mệnh đềROLLUPthường được thực hiện để tính toán tổng đúng theo của dữ liệu phân cung cấp như bán sản phẩm theo năm > quý > tháng.

Cú pháp của mệnh đề ROLLUP vào SQL Server

Cú pháp bình thường của ROLLUP vào SQL hệ thống như sau:

SELECT d1, d2, d3, aggregate_function(c4)FROM table_nameGROUP BY ROLLUP (d1, d2, d3);SQLCopy

Trong cú pháp này, d1, d2 cùng d3 là các cột thứ nguyên. Câu lệnh sẽ tính tổng những giá trị vào cột c4 dựa trên thứ bậc d1> d2> d3.

Bạn cũng hoàn toàn có thể ROLLUP 1 phần để sút tổng số phụ (subtotals) được tạo bằng cách sử dụng cú pháp sau:

SELECT d1, d2, d3, aggregate_function(c4)FROM table_nameGROUP BY d1, ROLLUP (d2, d3);SQLCopy

Ví dụ về mệnh đề ROLLUP trong SQL Server

Chúng ta sẽ áp dụng lại bảngsales.sales_summarytrongcơ sở tài liệu mẫuBikeStores đã chế tạo ra trong phần chỉ dẫn vềGROUPING SETSđể minh họa. Nếu khách hàng chưa sinh sản bảngsales.sales_summary, chúng ta cũng có thể sử dụng câu lệnh sau để chế tạo ra bảng.

SELECT b.brand_name AS brand, c.category_name AS category, p.model_year, round( SUM ( quantity * i.list_price * (1 - discount) ), 0 ) sales INTO sales.sales_summaryFROM sales.order_items iINNER JOIN production.products phường ON p.product_id = i.product_idINNER JOIN production.brands b ON b.brand_id = p.brand_idINNER JOIN production.categories c ON c.category_id = p.category_idGROUP BY b.brand_name, c.category_name, p.model_yearORDER BY b.brand_name, c.category_name, p.model_year;SQLCopy

Truy vấn dưới đây sử dụngROLLUPđể giám sát và đo lường số tiền bán sản phẩm theo chữ tín (tổng số phụ – subtotals) cùng cả uy tín và danh mục (tổng số – totals).

SELECT brand, category, SUM (sales) salesFROM sales.sales_summaryGROUP BY ROLLUP(brand, category);SQLCopy

Đây là đầu ra:

*

Trong lấy ví dụ này, tróc nã vấn mang định rằng tất cả một hệ thống phân cấp giữa chữ tín và danh mục, đó là thương hiệu > danh mục.

*

Mệnh đề HAVING vào SQL Server

Giới thiệu về mệnh đề HAVING vào SQL Server

Mệnh đềHAVINGthường được áp dụng với mệnh đềGROUP BYđể lọc các nhóm dựa vào một danh sách các điều kiện. Dưới đây minh họa cú pháp mệnh đềHAVING:

SELECT select_listFROM table_nameGROUP BY group_listHAVING conditions;SQLCopy

Trong cú pháp này, mệnh đềGROUP BYsẽ tổng vừa lòng các bản ghi thành những nhóm cùng mệnh đềHAVINGsẽ vận dụng một hoặc nhiều điều kiện cho các nhóm này.

Chỉ những nhóm thỏa mãn điều kiện trong mệnh đềHAVINGmới được bao gồm trong tập trung quả.

Vì SQL Server xử trí mệnh đềHAVINGsau mệnh đềGROUP BY, các bạn không thể sử dụngbí danh cộtđể tham chiếu đến những hàm tập vừa lòng được chỉ định và hướng dẫn trong câu lệnhSELECT. Tầm nã vấn tiếp sau đây sẽ thất bại:

SELECT column_name1, column_name2, aggregate_function (column_name3) column_aliasFROM table_nameGROUP BY column_name1, column_name2HAVING column_alias > value;SQLCopy

Thay vào đó, các bạn phải sử dụng các hàm tập phù hợp trực tiếp vào mệnh đềHAVINGmột cách rõ ràng như sau:

SELECT column_name1, column_name2, aggregate_function (column_name3) aliasFROM table_nameGROUP BY column_name1, column_name2HAVING aggregate_function (column_name3) > value;SQLCopy

Ví dụ về mệnh đề HAVING trong SQL Server

Hãy lấy một vài ví dụ nhằm hiểu cáchHAVINGhoạt động của mệnh đề.

Sử dụng HAVING với hàm COUNT vào SQL Server

Chúng ta sẽ thực hiện bảngorderstrongcơ sở dữ liệu mẫuBikeStores để minh họa:

*

Câu lệnh dưới đây sử dụng mệnh đềHAVINGđể search các quý khách hàng đã đặt tối thiểu hai đơn hàng mỗi năm:

SELECT customer_id, YEAR (order_date), COUNT (order_id) order_countFROM sales.ordersGROUP BY customer_id, YEAR (order_date)HAVING COUNT (order_id) >= 2ORDER BY customer_id;SQLCopy

*

Trong ví dụ như này:

Đầu tiên, mệnh đềGROUP BYnhóm các đơn đặt đơn hàng theo quý khách và năm đặt hàng. HàmCOUNT()trả về con số đơn mua hàng mỗi khách hàng được đặt trong mỗi năm.Thứ hai, mệnh đềHAVINGsẽ lọc bỏ tất cả các người sử dụng có số lượng đơn đặt hàng ít rộng hai.
*

Trong hướng dẫn này, các bạn đã tò mò các mệnh đềGROUP BY,GROUPING SET,CUBE,ROLLUPvàHAVINGtrongSQL Serverđể sắp xếp các phiên bản ghi theo nhóm.

SQL Server•Group By

•Created byuser-7ry1lyw2 year(s) ago

Câu Lệnh GROUP BY trong SQL

46upvote10downvote1 commentSaveAlias vào SQLJOIN trong SQL

1 Bình Luận

Mệnh đề GROUP BY trong SQL

Mệnh đề ORDER BY trong SQLTừ khóa DISTINCT vào SQL

Mệnh đềGROUP BYtrong SQL used bắt tay hợp tác with the commands CHỌN for sorting database như thể nhau thành groups.Mệnh đề GROUP BY này theo đúng mệnh đề WHERE trong câu lệnh SELECT với đứng trước mệnh đề ORDER BY.

Xem thêm: Cách Chặn Web Trên Modem Draytek 2925, Vigor2960 / 3900 / 300B

Main content

Cú phápEx example

Cú pháp

Cơ bản cú pháp của đề mục GROUP BY được hiển thị trong sau mã khối.GROUP BY trong SQL đề nghị tuân theo những điều khiếu nại trong mệnh đề WHERE và cần đứng trước mệnh đề ORDER BY ví như mệnh đề được sử dụng.

CHỌN cột1, cột2FROM tên_bảngWHERE <điều kiện>NHÓM THEO cột1, cột2ĐẶT HÀNG THEO cột1, cột2Ex example

Giả sử CUSTOMERS table bao gồm các bản ghi sau đây:

Đầu ra:

+ ---- + ---------- + ----- + ----------- + ---------- +| ID | TÊN | TUỔI THƠ | ĐỊA CHỈ | TIỀN LƯƠNG |+ ---- + ---------- + ----- + ----------- + ---------- +| 1 | Hà Anh | 32 | Đà nẵng | 2000,00 || 2 | Vân Hà | 25 | thành phố hà nội | 1500,00 || 3 | Vũ bởi | 23 | Vinh | 2000,00 || 4 | Thu Minh | 25 | tp. Hà nội | 6500,00 || 5 | Hải An | 27 | tp hà nội | 8500,00 || 6 | Hoàng | 22 | hà thành | 4500,00 || 7 | Bình | 24 | tp. Hà nội | 10000,00 |+ ---- + ---------- + ----- + ----------- + ---------- +Nếu bạn có nhu cầu biết tổng vốn lương của từng khách hàng hàng, thì truy vấn GROUP BY đang như sau.?

đầu tiên2SELECTNAME,SUM(SALARY)FROMCUSTOMERSGROUPBYNAME;

Điều này sẽ tạo ra hiệu quả sau:

+ ---------- + -------- +| TÊN | SUM (LƯƠNG) |+ ---------- + -------- +| Bình | 10000,00 || Hà Anh | 20000,00 || Hải An | 8500,00 || Hoàng | 4500,00 || Thu Minh | 6500,00 || Vân Hà | 1500,00 || Vũ bằng | 20000,00 |+ ---------- + -------- +Bây giờ, bọn họ hãy xem một bảng trong đó bảng CUSTOMERS gồm các bản ghi sau với tên trùng lặp:?

lần đầu tiên23456789ten11+| ID |NAME| AGE | ADDRESS | SALARY |+| 1 | Ha Anh | 32 | Ha Noi | 2000.00 || 2 | Ha Anh | 25 | Ha Noi | 1500.00 || 3 | Vu Bang | 23 | Vinh | 2000.00 || 4 | Thu Minh | 25 | Ha Noi | 6500.00 || 5 | hai An | 27 | Ha Noi | 8500.00 || 6 | hai An | 22 | Ha Noi | 4500.00 || 7 | nhì An | 24 | Ha Noi | 10000.00 |+

Bây giờ một đợt nữa, nếu bạn muốn biết tổng mức vốn lương trên mỗi khách hàng, thì truy nã vấn GROUP BY sẽ hệt như sau:?

đầu tiên2SELECTNAME,SUM(SALARY)FROMCUSTOMERSGROUPBYNAME;

Điều này sẽ khởi tạo ra kết quả sau:

+ ---------- + -------- +| TÊN | SUM (LƯƠNG) |+ ---------- + -------- +| Hà Anh | 3500,00 || Hải An | 23000,00 || Thu Minh | 4500,00 || Vũ bởi | 20000,00 |+ ---------- + -------- +Bài tiếp theo: từ bỏ khóa DISTINCT vào SQL

SQL ORDER BY mệnh đề trường đoản cú khóaDISTINCT trong SQL

Video SQL-39: Câu lệnh GROUP BY

Cảm ơn các bạn đã theo dõi nội dung bài viết Mệnh đề GROUP BY vào SQL. Chúng tôi hi vọng đã đem về thông tin bổ ích cho bạn. Mọi chủ ý đóng góp hoặc thắc mắc hãy comment bên dưới dưới, công ty chúng tôi sẽ bội nghịch hồi nhanh nhất có thể. hostingvietnam.vn chúc các bạn ngày mới tốt lành