• Giới thiệu
  • Liên hệ
  • Chính sách bảo mật
logo
  • Blogs
  • Thể Thao - Bóng Đá
No Result
View All Result
  • Blogs
  • Thể Thao - Bóng Đá
No Result
View All Result
logo
No Result
View All Result
Home Blogs lệnh group by trong sql

LỆNH GROUP BY TRONG SQL

Share on FacebookShare on Twitter
SQL Server: Nhóm theo lệnh trong SQL Server có thể bạn chưa biếtVí dụ về mệnh đề GROUP BY trong SQL ServerVí dụ về mệnh đề HAVING trong SQL ServerSử dụng HAVING với hàm COUNT trong SQL ServerCâu Lệnh GROUP BY Trong SQL

“group by trong sql” là từ khóa đang được mọi người quan tâm và chú ý đến. Bên cạnh đó, giasuviet.edu.vn là kênh chuyên chia sẻ về bản tin của máy tính, công nghệ, cũng như chia sẻ các thủ thuật tiện ích hữu ích cho người dùng. Hôm nay , giasuviet.edu.vn sẽ giới thiệu đến các bạn bài viết Mệnh đề GROUP BY trong SQL

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

Tuyên bố CategorySQL

Mệnh đề GROUP BY trong SQL

*

Câu lệnh group by trong sql được sử dụng cùng với câu lệnh SELECT để sắp xếp dữ liệu thống nhất thành các nhóm, hàm này trong ngôn ngữ sql đứng sau mệnh đề WHERE trong câu lệnh SELECT và trước mệnh đề ORDER BY.SQL và các mệnh đề như GROUP BY đang đóng một vai trò quan trọng như nhau trong DBMS.Biết cách sử dụng GROUP BY khi sử dụng ngôn ngữ SQL là một điều cần thiết.

Không có câu lệnh thừa nào của một hàm cơ sở dữ liệu, chỉ là bạn không cần sử dụng chúng hoặc áp dụng chúng không đúng mục đích.Mệnh đề group by sql được thêm vào vì các hàm tổng hợp (như SUM) trả về một tập hợp các giá trị trong cột đó mỗi khi chúng được gọi, nhờ lệnh sql GROUP BY chúng ta có thể tính tổng các giá trị.giá trị cho mỗi nhóm lẻ trong cột.Cách làm nội dung 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ụ, chúng tôi có bản 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 học phí của từng sinh viên, chúng ta phải sử dụng câu truy vấn sau:SQL> SELECT TEN, SUM (HOCPHI) FROM HOCPHISINHVIENGROUP BY TEN;Sau đó, nó sẽ tạo ra một bảng nội dung mới như sau:

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

Việc sử dụng mệnh đề nhìn chung 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 có thể sử dụng được, đây cũng có thể xem là một lợi thế của người tạo ra ngôn ngữ truy vấn.Truy vấn SQL.Một số hàm tổng hợp thường đi kèm với Group by khi lập trình SQL.

Theo công thức cấu trúc, group by trong máy chủ sql thường đi kèm với một số chức năng nhất định, cụ thể nhất là:

AVG: Hàm AVG trong SQL dùng để tìm giá trị trung bình của một trường gồm nhiều bản ghi khác nhau, khi được sử dụng với mệnh đề group by trong sql, hàm sẽ trả về giá trị trung bình của nhóm cột.COUNT: Hàm COUNT là hàm đơn giản nhất và rất hữu ích để đếm số lượng bản ghi được mong đợi được trả về bởi một câu lệnh SELECT.Khi được sử dụng, mệnh đề này sẽ trả về số lần xuất hiện trong một cột.MAX: Hàm MAX trong SQL được sử dụng để tìm giá trị lớn nhất trong một tập hợp các bản ghi, người dùng có thể tìm giá trị lớn nhất của tất cả các bản ghi được cung cấp bởi tên với mỗi mệnh đề nhóm.bởi máy chủ sqlMIN: Tương tự, hàm MIN trả về giá trị nhỏ nhất trong một nhóm cột khi đượ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 chắn sau bài viết này bí mật đã được bật mí, người dùng có thể tự mình tìm hiểu khi nào sử dụng group by sql, việc áp dụng ngôn ngữ máy tính sẽ trở nên dễ dàng hơn khi bạn thành thạo nó.

Ví dụ về nhóm theo câu lệnh cho lập trình sql

Một vài 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à phải nằm trong mệnh đề GROUP BY.

– Hàm_tong: có thể là các hàm như MIN, MAX, COUNT, SUM, AVG

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

– WHERE dieukien: điều kiện so khớp thỏa mãn đ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ụ sử dụng hàm SUM để tính tổng để trả về số thiết bị và tổng số lượng 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 sử dụng hàm min MIN để cung cấp cho bạn kết quả tên sản phẩm và số lượng tối thiểu của tên sản phẩm đó.

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

TỪ sanpham

GROUP BY ten_san pham

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

CHỌN danh sách trường

Bảng TỪ

Tiêu chí WHERE

Ghi chú:

– Danh sách trường là tên của một hoặc nhiều trường cần truy xuất

– Table là tên của bảng cần lấy các bản ghi

Tiêu chí là điều kiện cho WHERE.mệnh đề

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

– Mệnh đề GROUP BY luôn phải tuân theo điều kiện của mệnh đề WHERE, tức là sau khi viết xong mệnh đề WHERE, bạn hãy xuống dòng đến mệnh đề GROUP BY.– Mệnh đề ORDER BY luôn theo sau mệnh đề GROUP BY nếu được sử dụng trong cú pháp truy vấn dữ liệu.

Trên đây là những chia sẻ của chúng tôi vềcâu lệnhgroup bycủa ngôn ngữ sql, một câu lệnh dùng kết hợp với mệnh đề WHERE để nhóm trong sql cùng một dữ liệu.Hy vọng rằng từ những thông tin về cú pháp trên, bạn có thể học và thực hành với kết quả tốt hơn 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 quan trọng và trở nên cần thiết hơn đối với nhiều doanh nghiệp.Nhận thấy tầm quan trọng của SQL, Thảo Nguyên – người có nhiều năm học tập và làm việc trong lĩnh vực công nghệ thông tin đã quyết định thành lập trang web để chia sẻ những kiến ​​thức và kinh nghiệm của mình trong lĩnh vực này.Lĩnh vực SQL dành cho những bạn đam mê và muốn hiểu rõ hơn về lĩnh vực này.

*

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

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

Mệnh đề GROUP BY trong SQL Server cho phép bạn sắp xếp các hàng của truy vấn theo nhóm.Nhóm được xác định bởi các cột mà bạn chỉ định trong 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 dữ liệu MIN, MAX.

Để giúp bạn dễ dàng làm theo cách sử dụng GROUP BY trong SQL Server và để làm ví dụ, chúng tôi sẽ sử dụng bảng dữ liệu sau trong toàn bộ bài viết.

Bảng có tên làQuantrimang.com, có 4 cột IDchuyenmuc, Muccon, Chuyenmuclon, Sobai và 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 hoặc giá trị biến:

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

Ví dụ – sử dụng SUM.chức năng

SELECT Chuyenmuclon, SUM(Sobai) AS "Tong" FROM GROUP BY Chuyenmuclon;Ví dụ này sử dụng hàm SUM để trả về tênChuyenmuclonvà tổng số bài 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 sử dụng mệnh đề GROUP BY.

Sau đó, 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ụ này, hàm COUNT sẽ trả về số Chu kỳ của Chương trình:

+------+--------------+ | | Chuyenmuclon | +------+--------------+ | 3 | Lap trinh | +------+--------------+Nếu bạn không muốn lấy tên cột mà chỉ trả về số lượng 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ề sẽ chỉ có số 3.Ví dụ – sử 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 ở trên sẽ trả về Chuyenmuclon và số lượng bài viết tối thiểu của mục lớn đó.

*

Ví dụ – sử dụng MAX.chức năng

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

*

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

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

Mệnh đề WHERE trong SQLMệnh đề SQL Server FROMMệnh đề WHERE trong SQL ServerMệnh đề ORDER BY của SQL ServerĐiều kiện HOẶC trong SQL ServerMệnh đề DISTINCT của SQL ServerĐiều kiện LÀ NULL trong SQL Server

SQL Server: Nhóm theo lệnh trong SQL Server có thể bạn chưa biết

Trong hướng dẫn này, bạn sẽ tìm hiểuGROUP BY,GROUPING SET,CUBE,ROLLUPvà các điều khoảnHAVINGtrong SQL Server để 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 trong SQL Server

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

Sau đâ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 vấn này, mệnh đềGROUP BYđã tạo một nhóm cho mỗi tổ hợp giá trị trong các cột được liệt kê trong mệnh đềGROUP BY.

Xem ví dụ 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 đã truy xuất thông tin id khách hàng và năm đặt hàng của những khách hàng có id 1 và 2.

Như bạn có thể thấy trong đầu ra, khách hàng có id 1 đã đặt một đơn hàng vào năm 2016 và hai đơn hàng vào năm 2018. Khách hàng có id hai đã đặt hai đơn hàng vào năm 2017 và một đơn hàng vào năm 2018.

Hãy thêm mệnh đềGROUP BYvào truy vấn trên và 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 bản ghi khách hàng đầu tiên có id 1 thành hai nhóm và ba bản ghi khách hàng tiếp theo có id 2 thành hai nhóm khác với sự kết hợp duy nhất của id khách hàng và hàng năm đặt phòng.

Về mặt chức năng, mệnh đềGROUP BYtrong truy vấn trên tạo ra kết quả giống như truy 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 và hàm tổng hợp

Trong thực tế, các mệnh đềGROUP BYthường được sử dụng với chức năng tổng hợp để tạo báo cáo tóm tắt.

Một hàm tập hợp thực hiện phép tính trên một nhóm và trả về một giá trị duy nhất cho mỗi nhóm.Ví dụ, hàmCOUNT()trả về số lượng bản ghi trong mỗi nhóm.Các hàm tập hợp 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).

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

Ví dụ: truy vấn sau trả về số lượng đơn đặt hàng của khách hàng 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 sử 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 có gì đảm bảo rằng cột hoặc biểu thức sẽ trả về một giá trị duy nhất cho mỗi nhóm.

Ví dụ: truy 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ố 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 khách hàng ở mỗi thành phố:

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

Đây là kết quả:

*

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

Tương tự, truy vấn sau trả về số lượng khách hàng theo tiểu bang và 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 nhóm các cột mà bạn nhóm. Thông thường, một truy vấn với một tập hợp xác định một tập hợp nhóm duy nhất.

Ví dụ: truy vấn sau xác định một tập hợp nhóm bao gồm thương hiệu và danh mục được biểu thị là(brand, category). Truy vấn trả về số tiền bán hàng được nhóm theo thương hiệu 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 thương hiệu. Nó xác định một tập 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ó định nghĩa một tập hợp nhóm(category):

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

*

Truy vấn sau xác định một tập hợp nhóm trống(). Nó trả về số tiền bán hàng cho tất cả các thương hiệu và danh mục.

SELECT SUM (sales) salesFROM sales.sales_summary;SQLCopy

*

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

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

Để có được tập hợp kết quả thống nhất với dữ liệu tổng hợp cho tất cả các tập hợp 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 kết quả có cùng 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 ra một kết quả duy nhất với các tổng hợp 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 khá dài.Truy vấn chậm vì SQL Server cần thực hiện bốn truy vấn con và kết hợp các tập hợp kết quả thành một.

Để khắc phục những sự cố này, SQL Server cung cấp một mệnh đề con của mệnh đềGROUP BYđược gọi làGROUPING SETS.

GROUPING SETSđịnh nghĩa nhiều nhóm trong cùng một truy vấn. Sau đây là cú pháp chung 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 nhóm như sau:

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

Bạn có thể sử dụngGROUPING SETSđể viết lại truy vấn lấy dữ liệu bán hàng 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 ra kết quả giống như truy vấn sử dụng toán tửUNION ALL. Tuy nhiên, truy vấn này dễ đọc hơn nhiều và tất nhiên là hiệu quả hơn.

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

*

Mệnh đề CUBE trong SQL Server

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

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

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

Nếu bạn chưa làm theo hướng dẫnGROUPING SETS, bạn có thể tạo bảngsales.sales_summarybằng cách sử dụng 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 ra một tập hợp nhóm trống được ký hiệu là().

SELECT SUM(sales)FROM sales.sales_summary;SQLCopy

CUBElà một mệnh đề con của mệnh đềGROUP BYcho phép bạn tạo nhiều nhóm. Sau đây minh họa cú pháp chung 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 trong mệnh đềCUBE.

Truy vấn trên trả về cùng một tập hợp kết quả như truy vấn sau, sử dụng 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 bạn cóNcột được chỉ định trongCUBE, bạn sẽ có 2Ntập nhóm kết quả.

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

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

Trong trường hợp này, truy vấn tạo ra bốn tập hợp nhóm vì chỉ có hai cột được chỉ định trongCUBE.

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

Câu lệnh sau sử dụngCUBEđể tạo bốn 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 trong SQL Server

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

ROLLUPtrong SQL Server là một mệnh đề con của mệnh đềGROUP BYcung cấp cách viết tắt để xác định nhiềuGROUPING SETS. Không giống nhưCUBE– tạo các tập nhóm với tất cả các kết hợp của các cột, ROLLUP không tạo tất cả các tập hợp nhóm có thể dựa trên các cột thứ nguyên.

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

ROLLUP thường được sử dụng để tạo ra tổng số phụ (subtotals) và tổng số (totals) cho mục đích báo cáo.

Hãy xem xét ví dụ sau đây: mệnh đềCUBE (d1,d2,d3)sẽ xác định tám tập hợp nhóm 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 ra bốn tập hợp nhóm (giả sử phân cấpd1 > d2 > d3) như sau:

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

Mệnh đềROLLUPthường được sử dụng để tính toán tổng hợp của dữ liệu phân cấp như bán hàng theo năm > quý > tháng.

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

Cú pháp chung của ROLLUP trong SQL Server 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 và d3 là các cột thứ nguyên. Câu lệnh sẽ tính tổng các giá trị trong cột c4 dựa trên thứ bậc d1> d2> d3.

Bạn cũng có thể ROLLUP một phần để giảm 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ẽ sử dụng lại bảngsales.sales_summarytrongcơ sở dữ liệu mẫuBikeStores đã tạo trong phần hướng dẫn vềGROUPING SETSđể minh họa. Nếu bạn chưa tạo bảngsales.sales_summary, bạn có thể sử dụng câu lệnh sau để tạo 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 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

Truy vấn sau đây sử dụngROLLUPđể tính toán số tiền bán hàng theo thương hiệu (tổng số phụ – subtotals) và cả thương hiệu 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 ví dụ này, truy vấn giả định rằng có một hệ thống phân cấp giữa thương hiệu và danh mục, đó là thương hiệu > danh mục.

*

Mệnh đề HAVING trong SQL Server

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

Mệnh đềHAVINGthường được sử dụng với mệnh đềGROUP BYđể lọc các nhóm dựa trên một danh sách các điều kiện. Sau đâ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 hợp các bản ghi thành các nhóm và mệnh đềHAVINGsẽ áp dụng một hoặc nhiều điều kiện cho các nhóm này.

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

Vì SQL Server xử lý mệnh đềHAVINGsau mệnh đềGROUP BY, bạn không thể sử dụngbí danh cộtđể tham chiếu đến các hàm tập hợp được chỉ định trong câu lệnhSELECT. Truy vấn 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 đó, bạn phải sử dụng các hàm tập hợp trực tiếp trong 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 số ví dụ để hiểu cáchHAVINGhoạt động của mệnh đề.

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

Chúng ta sẽ sử dụng bảngorderstrongcơ sở dữ liệu mẫuBikeStores để minh họa:

*

Câu lệnh sau đây sử dụng mệnh đềHAVINGđể tìm các khách hàng đã đặt ít nhất 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ụ này:

Đầu tiên, mệnh đềGROUP BYnhóm các đơn đặt hàng theo khách hàng và năm đặt hàng. HàmCOUNT()trả về số lượng đơn đặt 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 khách hàng có số lượng đơn đặt hàng ít hơn hai.
*

Trong hướng dẫn này, bạn đã tìm hiểu các mệnh đềGROUP BY,GROUPING SET,CUBE,ROLLUPvàHAVINGtrongSQL Serverđể sắp xếp các 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 Trong SQLJOIN Trong SQL

1 Bình Luận

Mệnh đề GROUP BY trong SQL

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

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

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 phải tuân theo các điều kiện trong mệnh đề WHERE và phải đứng trước mệnh đề ORDER BY nếu 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 có 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 | Hà nội | 1500,00 || 3 | Vũ Bằng | 23 | Vinh | 2000,00 || 4 | Thu Minh | 25 | Hà nội | 6500,00 || 5 | Hải An | 27 | Hà nội | 8500,00 || 6 | Hoàng | 22 | Hà nội | 4500,00 || 7 | Bình | 24 | Hà nội | 10000,00 |+ ---- + ---------- + ----- + ----------- + ---------- +Nếu bạn muốn biết tổng mức lương của từng khách hàng, thì truy vấn GROUP BY sẽ như sau.?

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

Điều này sẽ tạo ra kết 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ờ, chúng ta hãy xem một bảng trong đó bảng CUSTOMERS có 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 | Hai An | 24 | Ha Noi | 10000.00 |+

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

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

Điều này sẽ 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ằng | 20000,00 |+ ---------- + -------- +Bài tiếp theo: Từ khóa DISTINCT trong SQL

SQL ORDER BY mệnh đề từ khóaDISTINCT trong SQL

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

Cảm ơn các bạn đã theo dõi bài viết Mệnh đề GROUP BY trong SQL. Chúng tôi hi vọng đã mang đến thông tin hữu ích cho bạn. Mọi ý kiến đóng góp hoặc thắc mắc hãy comment bên dưới dưới, chúng tôi sẽ phản hồi sớm nhất có thể. giasuviet.edu.vn chúc bạn ngày mới tốt lành

ShareTweetPin

BÀI VIẾT LIÊN QUAN

kiểm tra hiệu suất laptop

Kiểm tra hiệu suất laptop

by admin
08/10/2021
giờ làm việc của sacombank

Giờ làm việc của sacombank

by admin
14/10/2021
mẫu thư ngỏ hợp tác

Mẫu thư ngỏ hợp tác

by admin
11/10/2021
top bàn phím emoji đẹp cho điện thoại android, iphone

Top bàn phím emoji đẹp cho điện thoại android, iphone

by admin
07/10/2021

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Bài Viết Mới Nhất

Mẫu biên bản hiện trường

07:55, 08/10/2021
font chữ cho win 7

Font chữ cho win 7

07:15, 15/10/2021
download nox app player for mac

Download nox app player for mac

15:46, 13/10/2021
chỉnh sửa chữ trong photoshop

Chỉnh sửa chữ trong photoshop

14:11, 08/10/2021

Đề xuất cho bạn

Venus factor book pdf free download

14:58, 13/10/2021
download giấy a4 kẻ ngang file word

Download giấy a4 kẻ ngang file word

14:33, 14/10/2021
bố chồng nàng dâu phụ đề tiếng việt

Bố chồng nàng dâu phụ đề tiếng việt

03:06, 13/10/2021
học giáo lý hôn nhân cấp tốc tphcm

Học giáo lý hôn nhân cấp tốc tphcm

12:43, 07/10/2021
nhà xe ngọc sự nghĩa hưng hải phòng

Nhà xe ngọc sự nghĩa hưng hải phòng

13:07, 04/10/2021
2 người có vị trí nốt ruồi giống nhau

2 người có vị trí nốt ruồi giống nhau

02:25, 11/10/2021

Giới thiệu

giasuviet.edu.vn là website chia sẻ kiến thức hoàn toàn miễn phí. Cùng với sự phát triển công nghệ và ngành thể thao điện tử, thì ngày càng có nhiều người tìm hiểu thêm lĩnh vực này. Chính vì thế, giasuviet.edu.vn được tạo ra nhằm đưa thông tin hữu ích đến người dùng có kiến thức hơn về internet.

Danh Mục

  • Blogs
  • Thể Thao - Bóng Đá

Bài viết hay

  • Đề và đáp án thpt quốc gia 2016 môn sử ❤️❤️❤️
  • Điểm chuẩn đại học kiến trúc tp hcm 2018
  • Bẻ cong hình trong illustrator
  • Chứng từ ghi sổ theo quyết định 48
  • Cách đổi tên face khi chưa đủ 60 ngày

Textlink Quảng Cáo

  • Giới thiệu
  • Liên hệ
  • Chính sách bảo mật

© 2023 giasuviet.edu.vn thành lập và phát triển vì cộng đồng.

x
No Result
View All Result
  • Blogs
  • Thể Thao - Bóng Đá

© 2023 giasuviet.edu.vn thành lập và phát triển vì cộng đồng.