Làm cách nào để sử dụng GROUP BY cho nhiều cột trong MySQL?

Mệnh đề group by trong SQL cho phép bạn tổng hợp các bản ghi thành một tập hợp các nhóm như được chỉ định trong các cột

Hãy để chúng tôi khám phá cách chúng tôi có thể sử dụng nhóm thông qua nhiều cột

cú pháp

Chúng ta có thể diễn đạt cú pháp như hình bên dưới

CHỌN cột1 , cột2
TỪ TABLE_NAME
WHERE [ điều kiện ]
NHÓM BỞI cột1 , cột2
ĐẶT HÀNG BẰNG cột1 , cột2

Hãy để chúng tôi minh họa cách chúng ta có thể sử dụng mệnh đề group by

ví dụ 1

Hãy xem xét bảng dưới đây

Làm cách nào để sử dụng GROUP BY cho nhiều cột trong MySQL?

Chúng tôi có thể nhóm các bản ghi theo một cột, như được hiển thị trong truy vấn bên dưới

CHỌN tên_sản phẩm , ĐẾM(*)
TỪ sản phẩm
NHÓM BỞI product_name;

Truy vấn trên yêu cầu SQL nhóm tất cả các hàng có cùng tên_sản phẩm thành một nhóm duy nhất. Sau đó, chúng tôi sử dụng hàm đếm để xác định có bao nhiêu hàng trong nhóm đó

Đoạn mã trên sẽ trả về đầu ra như được hiển thị

Làm cách nào để sử dụng GROUP BY cho nhiều cột trong MySQL?

ví dụ 2

Nhưng còn việc nhóm qua nhiều cột thì sao?

Một truy vấn ví dụ được cung cấp dưới đây

CHỌN PRODUCT_NAME ,
    SỐ LƯỢNG ,
    ĐẾM(*)
TỪ SẢN PHẨM
NHÓM BỞI PRODUCT_NAME ,
SỐ LƯỢNG;

Trong trường hợp này, SQL sẽ nhóm dữ liệu nếu giá trị của cả tên_sản_phẩm và số_lượng giống nhau

Đoạn mã trên sẽ trả về truy vấn như được hiển thị

Làm cách nào để sử dụng GROUP BY cho nhiều cột trong MySQL?

Ghi chú. Vì quả cam đầu tiên có số lượng là 120 và quả cam thứ hai có số lượng là 100 nên SQL không xếp chúng vào cùng một nhóm

Hôm nay, Chúng tôi muốn chia sẻ với các bạn nhóm mysql theo nhiều cột. Trong bài đăng này, chúng tôi sẽ hiển thị cho bạn nhóm sql theo nhiều giá trị, hãy nghe nhóm sql theo nhiều cột khác nhau, chúng tôi sẽ cung cấp cho bạn bản demo và ví dụ để thực hiện. Trong bài đăng này, chúng ta sẽ tìm hiểu về Nhóm Sql theo nhiều cột với một ví dụ

Nhóm MySQL theo nhiều cột

nội dung

Trong ví dụ này, chúng tôi sẽ sử dụng Nhiều cột. Đầu tiên, nó nhóm các hàng theo từng Vị trí và sau đó là Sửa đổi. Tiếp theo, truy vấn sql này tìm Tổng thu nhập và Tổng số tiền bảo trì trong mỗi nhóm
ví dụ 1. nhóm mysql theo nhiều cột

SELECT Position,
       Modification,
       SUM(Earning),
       SUM(Maintenance)
 FROM `tamilblasters`.member
 GROUP BY Position, Modification;

Tuy nhiên, từ phần trên, tôi đã nhóm theo Vị trí, các giá trị cột đang lặp lại. Đó là bởi vì tôi đã sử dụng các cột Vị trí và Sửa đổi trong mệnh đề nhóm

Trong bảng order, bạn có các cột order_date, product_id, customer_idnumber. Bạn muốn đếm số lượng sản phẩm được mua bởi mỗi khách hàng mỗi ngày

Bảng order trông như thế này

order_dateproduct_idcustomer_idnumber2020-11-257112020-11-2512132020-11-2653122020-11-261242020-11-263212020-11-2616272020-11-263322020-11-27631

Giải pháp

SELECT
  order_date,
  customer_id,
  SUM(number) AS products_number
FROM order

Kết quả là

order_datecustomer_idproducts_number2020-11-26322020-11-27312020-11-262122020-11-25142020-11-2612

Thảo luận

Để nhóm theo hai cột, chỉ cần sử dụng GROUP BY với hai cột. Tên cột phải được liệt kê sau từ khóa GROUP BY và được phân tách bằng dấu phẩy. Các nhóm sẽ được tạo dựa trên giá trị của cả hai cột; . g. ('2020-11-25', 1)). Nhìn vào bảng dưới đây, trong đó mỗi nhóm được trình bày bằng một màu khác nhau

order_datecustomer_idproduct_idnumber2020-11-251712020-11-2511232020-11-2615322020-11-262142020-11-262312020-11-2621672020-11-263322020-11-27361

Nếu một hoặc cả hai cột có giá trị order0, các giá trị này được coi là một nhóm riêng biệt (e. g. , order1, order2 hoặc order3)

Mặt khác, nếu có order4 trong một cột mà chúng tôi áp dụng hàm tổng hợp, thì các giá trị order0 chỉ đơn giản là bị bỏ qua. (Trong ví dụ này, hàm tổng hợp là order6 và cột là number). Nếu chúng ta có các giá trị số 2, 1 và NULL cho một trong các nhóm, thì order8 sẽ bằng order9 (order_date0 và order_date1 được cộng lại với nhau và order0 bị bỏ qua. )

Tương tự, bạn có thể nhóm theo số lượng cột bất kỳ – chỉ cần viết tên cột trong mệnh đề GROUP BY và phân tách chúng bằng dấu phẩy

Làm cách nào để sử dụng GROUP BY trong MySQL với nhiều cột?

Để sắp xếp các dữ liệu tương tự (giống hệt nhau) thành các nhóm, chúng ta sử dụng mệnh đề SQL GROUP BY. Mệnh đề SQL GROUP BY được sử dụng cùng với một số hàm tổng hợp để nhóm các cột có cùng giá trị trong các hàng khác nhau. Chúng tôi thường sử dụng mệnh đề GROUP BY với câu lệnh SELECT, mệnh đề WHERE và mệnh đề ORDER BY .

Chúng ta có thể NHÓM THEO nhiều cột trong MySQL không?

Có, có thể sử dụng mệnh đề GROUP BY của MySQL với nhiều cột giống như chúng ta có thể sử dụng mệnh đề DISTINCT của MySQL. Xem xét ví dụ sau trong đó chúng tôi đã sử dụng mệnh đề DISTINCT trong truy vấn đầu tiên và mệnh đề GROUP BY trong truy vấn thứ hai, trên các cột 'fname' và 'Lname' của bảng có tên 'thử nghiệm'.

Tôi có thể NHÓM THEO 3 cột trong SQL không?

Chúng tôi có thể nhóm tập kết quả trong SQL trên nhiều giá trị cột . Khi chúng tôi xác định tiêu chí nhóm trên nhiều cột, tất cả các bản ghi có cùng giá trị cho các cột được xác định trong mệnh đề nhóm theo được biểu thị chung bằng cách sử dụng một bản ghi trong đầu ra truy vấn.

Điều gì xảy ra khi chúng ta NHÓM THEO bằng cách sử dụng nhiều cột trong một truy vấn SQL?

Câu lệnh GROUP BY trong SQL được sử dụng để sắp xếp dữ liệu giống hệt nhau thành các nhóm với sự trợ giúp của một số hàm. tôi. e nếu một cột cụ thể có cùng giá trị trong các hàng khác nhau thì nó sẽ sắp xếp các hàng này thành một nhóm. Điểm quan trọng. Mệnh đề GROUP BY được sử dụng với câu lệnh SELECT