Thứ Tư, 27 Tháng Mười Một 2024
Trang chủPHP & MysqlMySQLMệnh đề GROUP BY trong MySQL - Mệnh đề nhóm dữ liệu...

Mệnh đề GROUP BY trong MySQL – Mệnh đề nhóm dữ liệu bản ghi

Mệnh đề GROUP BY trong MySQL – Hướng dẫn và ví dụ sử dụng. Trong bài viết này chúng ta sẽ tìm hiểu một mệnh đề rất quan trọng và được sử dụng nhiều trong MySQL, đó là mệnh đề GROUP BY. Cùng bắt đầu nhé!

DANH SÁCH BÀI VIẾT
Mệnh đề HAVING trong MySQL - Đặt đk sau các hàm tổng hợp
Mệnh đề ORDER BY trong MySQL - Mệnh đề sắp xếp bản ghi
Mệnh đề GROUP BY trong MySQL - Mệnh đề nhóm dữ liệu bản ghi
Tìm hiểu Mệnh đề WHERE IN, WHERE NOT IN trong MySQL
Đặt điều kiện sau mệnh đề GROUP BY trong MySQL với HAVING

Mệnh đề GROUP BY

Mệnh đề GROUP BY trong MySQL được sử dụng để nhóm các bản ghi trong một bảng theo các giá trị của một hoặc nhiều cột. Áp dụng Group by cho phép ta có thể tính toán tổng hợp, đếm, tính trung bình, tối đa hoặc tối thiểu của các giá trị trong các nhóm đó.

Hoặc trong một vài trường hợp ta có thể sử dụng lệnh Group by chỉ để loại bỏ và lấy một hàng duy nhất đối với các giá trị bị trùng lặp suất hiện hai hay nhiều lần.

Cú pháp

SELECT column_name1, aggregate_function(column_name2)
FROM table_name
WHERE condition
GROUP BY column_name3;

Trong đó:

  • column_name1: Tên cột chọn(Có thể chọn tất cả các cột)
  • aggregate_function(column_name2): Là một hàm đếm(count), tính trung bình(avg), tính tổng(SUM)…hay bất kì một hàm chức năng nào đó. column_name2 là tên cột được tính toán trong hàm. (Có thể có hoặc không).
  • table_name: Là tên bảng
  • condition: Điều kiện (Có thể có hoặc không)
  • column_name3: Nhóm theo tên cột

column_name1, column_name2, column_name3 có thể cùng là một tên cột.

Ví dụ sử dụng

Mình có bảng tokens ví dụ như dưới đây.

Mệnh đề GROUP BY trong MySQL - Hướng dẫn và ví dụ sử dụng

Chúng ta sẽ cùng làm lần lượt các ví dụ minh họa để hiểu rõ hơn về mệnh đề g GROUP BY.

Ví dụ 1: Sử dụng GROUP BY loại bỏ các giá trị suất hiện nhiều lần

Với ví dụ này chúng ta sẽ nhóm các hàng có cùng user_id. Tức là với mỗi user_id ta sẽ loại bỏ các hàng trùng lặp và chỉ cần lấy ra một hàng duy nhất bất kì nào đó và không quan trọng là hàng nào. Vậy ta dùng mệnh đề GROUP BY để nhóm dữ liệu như sau.

SELECT * FROM `tokens`
GROUP BY user_id

Kết quả khi thực thi câu lệnh

Ví dụ sử dụng mệnh đề group by

Ví dụ 2: Sử dụng GROUP BY loại bỏ các user_id suất hiện nhiều lần, và đếm xem mỗi user_id suất hiện bao nhiêu lần.

Cũng tương tự như ví dụ 1, tuy nhiên đối với ví dụ này ta sẽ đếm xem user_id đó suất hiện bao nhiêu lần. Viết lệnh SQL như sau.

SELECT *, COUNT(user_id) as count
FROM `tokens`
GROUP BY user_id;

COUNT(user_id) as count, có nghĩa là ta định nghĩa lại cột được tạo thành COUNT(user_id) có tên là cột count.

Kết quả khi thực thi câu lệnh

Kết quả thực hiện mệnh đề

Với ví dụ này dễ dàng nhận thấy các user_id chỉ suất hiện 1 lần là 19,970,456, user_id 67740 thì suất hiện là 3 lần, nhiều nhất là 4519 suất hiện 7 lần.

Ví dụ 3: Tính giá trị trung bình cộng trong 1 nhóm.

HEHE… với bảng ví dụ trên mình không biết phải tính giá trị cột nào cho hợp lý, nên mình tạm lấy cột id để tính trung bình nhé:)).

>>XEM THÊM: Khóa học lập trình Android từ cơ bản đến thành thạo – Giảm ngay 40%

Để tính trung bình cộng cột id của mỗi user_id ta viết lệnh SQL như sau:

SELECT *, AVG(id) as avg
FROM `tokens`
GROUP BY user_id

Kết quả thực hiện câu lệnh

Mệnh đề GROUP BY trong MySQL - Hướng dẫn và ví dụ sử dụng

Ví dụ 4: Tính tổng trong một nhóm

Cũng tương tự như ví dụ 3, ví dụ này mình sẽ tính tổng cột id của mỗi user_id. Viết SQL như sau.

SELECT *, SUM(id) as id_sum
FROM tokens
GROUP BY user_id

Kết quả thực hiện câu lệnh

Mệnh đề GROUP BY trong MySQL - Hướng dẫn và ví dụ sử dụng

Ví dụ 5: Tìm max id của mỗi user_id

SELECT user_id, MAX(id) as id_max
FROM `tokens`
GROUP BY user_id

Kết quả thực hiện câu lệnh

Kết quả ví dụ

Ví dụ 6: Tìm min id của mỗi user_id

SELECT user_id, MIN(id) as id_max
FROM `tokens`
GROUP BY user_id

Kết quả thực hiện câu lệnh

Kết quả ví dụ

Như ta đã biết để lọc dữ liệu ta sẽ sử dụng câu mệnh đề WHERE đặt điều kiện. Tuy nhiên đối với where chỉ có thể đặt điều kiện với các cột tồn tại trước trong bảng, còn đối với các cột được tạo trong quá trình select thì không thể đặt điều kiện với các cột này. Vì vậy mệnh đề HAVING đã ra đời để đắp ứng nhu cầu đó, tiếp tục theo dõi bài viết sau mình sẽ hướng dẫn chi tiết mệnh và cách sử dụng mệnh đề Having.

Cảm ơn bạn đã theo dõi bài viết! Chúc bạn học tốt!

[XEM CÁC BÀI VIẾT CHUYÊN ĐỀ HỌC MYSQL CƠ BẢN TẠI ĐÂY]

XEM THÊM
Toán tử Like và Not Like – Tìm kiếm khớp chuỗi trong MySQL
Tìm hiểu Mệnh đề WHERE IN, WHERE NOT IN trong MySQL
Câu lệnh INSERT INTO trong MySQL – Lệnh chèn dữ liệu vào bảng
Câu lệnh CREATE TABLE trong MySQL – Lệnh tạo bảng mới
Các kiểu dữ liệu trong MySQL (Data Types) – Học MySQL
Câu lệnh SELECT trong MySQL – Khi nào thì dùng lệnh SELECT
Mệnh đề FROM trong MySQL – truy vấn từ bảng nào
0 0 Phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN
Đăng ký nhận thông báo
Thông báo email khi
guest
0 Bình luận
Không thể gửi email
Phản hồi nội tuyến

NÊN ĐỌC THÊM

Bạn muốn tìm kiếm gì?

Dịch vụ code thuê

TUICOCACH.COM NHẬN ĐẶT TEXTLINK, BANNER, GP
0
Giáo sư! có thể ném gạch bên dưới nhé!x