Hướng dẫn này chỉ cho bạn cách sử dụng mệnh đề GROUP BY trong MySQL để nhóm các hàng thành nhóm con dựa trên các cột hoặc giá trị được trả về từ một biểu thức.

Bạn đang xem : cách sử dụng nhóm theo trong mysql

Tóm tắt: > trong hướng dẫn này, bạn sẽ học cách sử dụng MySQL GROUP BY để nhóm các hàng thành các nhóm con dựa trên các giá trị của cột hoặc biểu thức.

Giới thiệu về Mệnh đề GROUP BY trong MySQL

Mệnh đề GROUP BY nhóm một tập hợp các hàng thành một tập hợp các hàng tóm tắt theo giá trị của cột hoặc biểu thức. Mệnh đề GROUP BY trả về một hàng cho mỗi nhóm. Nói cách khác, nó làm giảm số hàng trong tập kết quả.

Mệnh đề GROUP BY là mệnh đề tùy chọn của SELECT câu lệnh. Phần sau minh họa cú pháp mệnh đề GROUP BY :

 

CHỌN

c1, c2, ..., cn, tổng hợp (ci)

TỪ

bảng

Ở ĐÂU

where_conditions

GROUP

BY

c1, c2, ..., cn;

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Trong cú pháp này, bạn đặt GROUP BY < / code> sau mệnh đề FROM WHERE . Sau từ khóa GROUP BY, bạn đặt là danh sách các cột hoặc biểu thức được phân tách bằng dấu phẩy để nhóm các hàng.

MySQL đánh giá mệnh đề GROUP BY sau các mệnh đề FROM WHERE và trước các mệnh đề HAVING , SELECT < / code>, DISTINCT , ĐẶT HÀNG BỞI LIMIT mệnh đề:

Trong thực tế, bạn thường sử dụng mệnh đề GROUP BY với các hàm tổng hợp , chẳng hạn như SUM , AVG , MAX , MIN < / code> và COUNT . Hàm tổng hợp xuất hiện trong mệnh đề SELECT cung cấp thông tin của từng nhóm.

Các ví dụ về MySQL GROUP BY

Hãy lấy một số ví dụ về việc sử dụng Mệnh đề GROUP BY .

A) Ví dụ về GROUP BY trong MySQL đơn giản

Hãy xem bảng đơn hàng trong cơ sở dữ liệu mẫu .

đơn đặt hàng bảng

Giả sử bạn muốn nhóm các giá trị trạng thái của đơn hàng thành các nhóm con, bạn sử dụng GROUP BY mệnh đề với cột status như truy vấn sau:

 

< p class = "hljs-keyword"> CHỌN

trạng thái

TỪ

đơn đặt hàng

GROUP

BY

trạng thái

;

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Dùng thử

MySQL GROUP BY example

Như bạn có thể thấy rõ từ đầu ra, Mệnh đề GROUP BY trả về các lần xuất hiện duy nhất của các giá trị trạng thái . Nó hoạt động giống như toán tử DISTINCT như được hiển thị trong truy vấn sau:

 

CHỌN

DISTINCT

trạng thái

TỪ

order;

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

< span class = "sql" rel = "noopener noreferrer" target = "_ blank"> Hãy dùng thử

B) Sử dụng MySQL GROUP BY với các hàm tổng hợp

< span title = "Các hàm tổng hợp MySQL"> các hàm tổng hợp cho phép bạn thực hiện phép tính tập hợp các hàng và trả về một giá trị duy nhất. Mệnh đề GROUP BY thường được sử dụng với hàm tổng hợp để thực hiện các phép tính và trả về một giá trị duy nhất cho mỗi nhóm con.

Ví dụ: nếu bạn muốn biết số lượng đơn hàng trong mỗi trạng thái, bạn có thể sử dụng hàm COUNT với mệnh đề GROUP BY như sau:

 

CHỌN

trạng thái

,

COUNT

(*)

TỪ

đơn đặt hàng

GROUP

BY

trạng thái

;

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Dùng thử

MySQL GROUP BY với hàm COUNT

Xem bảng order orderdetails sau.

 order-orderDetails-table

Để nhận tổng số tiền tất cả các đơn hàng theo trạng thái, bạn tham gia < / span> bảng order với bảng orderdetails và sử dụng hàm SUM để tính tổng số tiền. Xem truy vấn sau:

 

CHỌN

trạng thái

,

SUM

(numberOrdered * priceEach)

AS

số tiền

TỪ

đơn đặt hàng

INNER

THAM GIA

orderdetails

SỬ DỤNG

(orderNumber)

GROUP

BY

status

;

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Dùng thử

MySQL GROUP BY với hàm SUM

Tương tự, truy vấn sau trả về số đơn đặt hàng và tổng số tiền của mỗi đơn đặt hàng.

 < p>  

CHỌN

orderNumber,

SUM

(numberOrdered * priceEach)

AS

TỪ

chi tiết đơn hàng

GROUP

BY

orderNumber;

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

< span class = "sql" rel = "noopener noreferrer" target = "_ blank"> Dùng thử

Ví dụ về số thứ tự của MySQL GROUP BY < h3> C) MySQL GROUP BY với ví dụ về biểu thức

Ngoài các cột, bạn có thể nhóm các hàng theo biểu thức. Truy vấn sau lấy tổng doanh số bán hàng cho mỗi năm.

 

CHỌN

YEAR

(orderDate)

AS

năm

,

SUM

(numberOrdered * priceEach)

AS

TỪ

đơn đặt hàng

INNER

THAM GIA

orderdetails

SỬ DỤNG

(orderNumber)

Ở ĐÂU

trạng thái

=

'Đã giao hàng'

GROUP

BY

YEAR

(orderDate);

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Dùng thử

Ví dụ về biểu thức MySQL GROUP BY

Trong ví dụ này, chúng tôi đã sử dụng hàm YEAR để trích xuất dữ liệu năm từ ngày đặt hàng ( orderDate ). Chúng tôi chỉ bao gồm các đơn đặt hàng có trạng thái đã giao hàng trong tổng doanh số bán hàng. Lưu ý rằng biểu thức xuất hiện trong mệnh đề SELECT phải giống với biểu thức trong mệnh đề GROUP BY .

D) Sử dụng MySQL GROUP BY với ví dụ về mệnh đề HAVING

Để lọc các nhóm được trả về bởi mệnh đề GROUP BY , bạn sử dụng mệnh đề HAVING . Truy vấn sau sử dụng mệnh đề HAVING để chọn tổng doanh số của những năm sau 2003.

 

CHỌN

YEAR

(orderDate)

AS

năm

,

SUM

(numberOrdered * priceEach)

AS

TỪ

đơn đặt hàng

INNER

THAM GIA

orderdetails

SỬ DỤNG

(orderNumber)

Ở ĐÂU

trạng thái

=

'Đã giao hàng'

GROUP

BY

năm

năm

& gt;

2003

;

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Dùng thử

MySQL GROUP BY với ví dụ HAVING

Mệnh đề GROUP BY: MySQL so với SQL tiêu chuẩn

Tiêu chuẩn SQL không cho phép bạn sử dụng bí danh trong GROUP Mệnh đề BY trong khi MySQL hỗ trợ điều này.

Ví dụ: truy vấn sau trích xuất năm từ ngày đặt hàng. Đầu tiên, nó sử dụng year làm bí danh của biểu thức YEAR (orderDate) và sau đó sử dụng bí danh year trong GROUP BY < / code> mệnh đề.

Truy vấn sau không hợp lệ trong chuẩn SQL:

 

CHỌN

YEAR

(orderDate)

AS

năm

,

COUNT

(orderNumber)

TỪ

đơn đặt hàng

GROUP

BY

năm

;

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Dùng thử

MySQL GROUP THEO chuẩn SQL

Ngoài ra, MySQL cho phép bạn sắp xếp các nhóm theo thứ tự tăng dần hoặc giảm dần. Thứ tự sắp xếp mặc định tăng dần. Ví dụ: nếu bạn muốn lấy số lượng đơn đặt hàng theo trạng thái và sắp xếp trạng thái theo thứ tự giảm dần, bạn có thể sử dụng mệnh đề GROUP BY với DESC như truy vấn sau:

 

CHỌN

trạng thái

,

COUNT

(*)

TỪ

đơn đặt hàng

GROUP

BY

status

DESC

;

Code ngôn ngữ:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Dùng thử

Ví dụ về MySQL GROUP BY DESC

Lưu ý DESC trong mệnh đề GROUP BY sắp xếp trạng thái theo thứ tự giảm dần. Và bạn cũng có thể sử dụng ASC trong mệnh đề GROUP BY một cách rõ ràng để sắp xếp các nhóm theo trạng thái theo thứ tự tăng dần.

Mệnh đề GROUP BY so với. Mệnh đề DISTINCT

Nếu bạn sử dụng mệnh đề GROUP BY trong câu lệnh SELECT mà không sử dụng các hàm tổng hợp , mệnh đề GROUP BY hoạt động giống như mệnh đề DISTINCT .

Câu lệnh sau sử dụng GROUP Mệnh đề BY để chọn các trạng thái duy nhất của khách hàng từ bảng khách hàng .

 

CHỌN

tiểu bang

TỪ

khách hàng

GROUP

BY

state;

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Dùng thử < / p> Ví dụ về MySQL DISTINCT so với GROUP BY

Bạn có thể đạt được kết quả tương tự bằng cách sử dụng mệnh đề DISTINCT :

< pre class = "wp-block-code">

CHỌN

DISTINCT

tiểu bang

TỪ

khách hàng;

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

< span class = "sql" rel = "noopener"> Hãy dùng thử

Ví dụ về MySQL DISTINCT so với GROUP BY với sắp xếp < p> Nói chung, mệnh đề DISTINCT là một trường hợp đặc biệt của mệnh đề GROUP BY . Sự khác biệt giữa mệnh đề DISTINCT và mệnh đề GROUP BY là mệnh đề GROUP BY sắp xếp tập kết quả , trong khi Mệnh đề DISTINCT thì không.

Lưu ý rằng MySQL 8.0 đã loại bỏ cách sắp xếp ngầm cho mệnh đề GROUP BY . Do đó, nếu bạn sử dụng MySQL 8.0+, bạn sẽ thấy rằng tập hợp kết quả của truy vấn trên với mệnh đề GROUP BY không được sắp xếp.

Nếu bạn thêm Mệnh đề ORDER BY cho câu lệnh sử dụng mệnh đề DISTINCT , tập hợp kết quả được sắp xếp và giống với tập hợp được trả về bởi câu lệnh sử dụng Mệnh đề GROUP BY .

 

CHỌN

DISTINCT

tiểu bang

TỪ

khách hàng

ĐẶT HÀNG

THEO

state;

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

< span class = "sql" rel = "noopener"> Hãy dùng thử

Tóm tắt

  • Sử dụng mệnh đề GROUP BY để nhóm các hàng thành nhóm con.

Hướng dẫn này có hữu ích không?


Xem thêm những thông tin liên quan đến chủ đề cách sử dụng group by trong mysql

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

alt

  • Tác giả: thân triệu
  • Ngày đăng: 2018-02-23
  • Đánh giá: 4 ⭐ ( 5392 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong nội dung bài hoc này, chúng ta sẽ tìm hiểu ý nghĩa, cách sử dụng câu lệnh group by trong câu truy vấn sql. hướng dẫn sql cơ bản và nâng cao. triệu thân channel-let's grow together!

    link tải database demo: https://drive.google.com/file/d/1m2bG-QQ04T__GsO1uFkdf4IDYxSsgAaj/view?usp=sharing

Câu Lệnh GROUP BY Trong SQL

  • Tác giả: www.codehub.com.vn
  • Đánh giá: 5 ⭐ ( 8701 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Câu Lệnh GROUP BY Trong SQL
    ===========================

    Câu lệnh **GROUP BY** thường được sử dụng với các hàm tổng hợp (**COUNT**, **MAX**, **MIN**, **SUM**, **AVG**) để nhóm kết quả theo một hoặc nhiều cột.

    Cú Pháp GROUP BY
    ================...

Group By trong MySQL

  • Tác giả: freetuts.net
  • Đánh giá: 5 ⭐ ( 8788 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Group By trong MySQL có công dụng gom nhóm dữ liệu theo một hoặc nhiều field nào đó, kết hợp Group By Having sẽ giúp lọc dữ liệu tốt hơn trong MySQL

Sự khác biệt giữa GROUP BY và ORDER BY trong các từ đơn giản

  • Tác giả: helpex.vn
  • Đánh giá: 5 ⭐ ( 5845 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Đối với một người đang học SQL, một trong những nơi phổ biến nhất để gặp khó khăn là khi học GROUP BY lệnh. GROUP BY và ORDER BY là hai từ khóa quan trọng trong SQL mà chúng tôi sử dụng để…

Mệnh đề GROUP BY trong MySQL

  • Tác giả: vietjack.com
  • Đánh giá: 3 ⭐ ( 7378 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Mệnh đề GROUP BY trong MySQL - Học MySQL cơ bản đến nâng cao bắt đầu từ MySQL và PHP, Cơ sở dữ liệu, Cú pháp kết hợp MySQL và PHP, Mệnh đề WHERE, Lệnh DELETE, Truy vấn INSERT, Truy vấn UPDATE, Ràng buộc (Constraint), Truy vấn DROP, Mệnh đề ORDER BY, Mệnh đề GROUP BY, Hàm xử lý, Sử dụng JOIN, Giá trị NULL, Transaction, Sử dụng Sequence, Nhập - Xuất cơ sở dữ liệu, Phương thức Backup và Recovery, Regexp, SQL Injection và cách sử dụng trong PHP theo các bước cơ bản.

Group By trong MySQL

  • Tác giả: final-blade.com
  • Đánh giá: 5 ⭐ ( 8815 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Hướng dẫn học SQL cho người mới bắt đầu với MySQL

  • Tác giả: openplanning.net
  • Đánh giá: 5 ⭐ ( 9920 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Cách thay đổi tốc độ phát lại video HTML - tốc độ thẻ video html

By ads_php