hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • MySQL
Hàm Tổng Hợp và Nhóm Dữ Liệu Trong MySQL: GROUP BY, HAVING

Hàm Tổng Hợp và Nhóm Dữ Liệu Trong MySQL: GROUP BY, HAVING

  • 08-07-2025
  • Toanngo92
  • 0 Comments

Hàm tổng hợp (Aggregate Functions) cùng với GROUP BY và HAVING — những công cụ rất quan trọng để phân tích dữ liệu dạng tổng hợp trong MySQL, đặc biệt hữu ích trong báo cáo, thống kê.


Mục lục

  • ✅ 1. Các Hàm Tổng Hợp (Aggregate Functions)
    • Ví dụ bảng Orders:
  • ✅ 2. Sử dụng các hàm tổng hợp
  • ✅ 3. Nhóm dữ liệu với GROUP BY
    • Ví dụ:
  • ✅ 4. Lọc nhóm bằng HAVING
    • Lưu ý:
    • Ví dụ:
  • ✅ 5. Kết hợp GROUP BY + ORDER BY
  • 💡 Bài tập thực hành
    • Câu hỏi:
    • Gợi ý lời giải:
  • 📘 Kết Luận

✅ 1. Các Hàm Tổng Hợp (Aggregate Functions)

HàmChức năng
COUNT()Đếm số dòng
SUM()Tính tổng giá trị số
AVG()Tính trung bình
MIN()Lấy giá trị nhỏ nhất
MAX()Lấy giá trị lớn nhất

Ví dụ bảng Orders:

CREATE TABLE Orders (
    id INT PRIMARY KEY,
    customer VARCHAR(50),
    amount DECIMAL(10,2)
);
-- Thêm dữ liệu
INSERT INTO Orders (id, customer, amount) VALUES
(1, 'Nam', 500),
(2, 'Linh', 300),
(3, 'Nam', 200),
(4, 'Hà', 400),
(5, 'Linh', 100);

✅ 2. Sử dụng các hàm tổng hợp

-- Tổng số đơn hàng
SELECT COUNT(*) AS so_don_hang FROM Orders;

-- Tổng doanh thu
SELECT SUM(amount) AS tong_doanh_thu FROM Orders;

-- Doanh thu trung bình
SELECT AVG(amount) AS trung_binh FROM Orders;

-- Đơn hàng cao nhất và thấp nhất
SELECT MAX(amount), MIN(amount) FROM Orders;

✅ 3. Nhóm dữ liệu với GROUP BY

Dùng để nhóm các bản ghi lại theo một hoặc nhiều cột, rồi áp dụng hàm tổng hợp lên từng nhóm.

Ví dụ:

-- Tổng doanh thu theo từng khách hàng
SELECT customer, SUM(amount) AS tong_mua
FROM Orders
GROUP BY customer;

✅ 4. Lọc nhóm bằng HAVING

Lưu ý:

  • Dùng WHERE để lọc từng dòng trước khi nhóm.
  • Dùng HAVING để lọc sau khi đã nhóm.

Ví dụ:

-- Chỉ hiển thị khách hàng có tổng mua > 400
SELECT customer, SUM(amount) AS tong_mua
FROM Orders
GROUP BY customer
HAVING tong_mua > 400;

✅ 5. Kết hợp GROUP BY + ORDER BY

-- Xếp hạng khách hàng theo tổng mua giảm dần
SELECT customer, SUM(amount) AS tong_mua
FROM Orders
GROUP BY customer
ORDER BY tong_mua DESC;

💡 Bài tập thực hành

Giả sử bạn có bảng Students(name, gender, age):

Câu hỏi:

  1. Đếm số sinh viên theo từng giới tính?
  2. Tính tuổi trung bình theo từng giới tính?
  3. Lọc nhóm giới tính có tuổi trung bình > 21?

Gợi ý lời giải:

-- 1
SELECT gender, COUNT(*) AS so_luong
FROM Students
GROUP BY gender;

-- 2
SELECT gender, AVG(age) AS tuoi_tb
FROM Students
GROUP BY gender;

-- 3
SELECT gender, AVG(age) AS tuoi_tb
FROM Students
GROUP BY gender
HAVING tuoi_tb > 21;

📘 Kết Luận

  • GROUP BY giúp gom nhóm dữ liệu theo một tiêu chí (ví dụ theo khách hàng, giới tính…)
  • Các hàm tổng hợp giúp tóm tắt dữ liệu dạng thống kê.
  • HAVING là công cụ mạnh để lọc kết quả sau khi GROUP BY.

Bài viết liên quan:

TCL Trong MySQL – Quản Lý Giao Dịch Với COMMIT, ROLLBACK, SAVEPOINT
FUNCTION Trong MySQL – Định Nghĩa Hàm Tùy Chỉnh Trả Về Giá Trị
TRIGGER Trong MySQL – Kích Hoạt Tự Động Khi Dữ Liệu Thay Đổi
Giao Dịch (Transaction) Trong MySQL — START TRANSACTION, COMMIT, ROLLBACK
Stored Procedure Trong MySQL — thủ tục lưu trữ
Tăng Tốc Truy Vấn Dữ Liệu Với INDEX Trong MySQL
VIEW Trong MySQL — Bảng Ảo Từ Truy Vấn
Điều Kiện Trong Truy Vấn Với CASE WHEN và Wildcard, REGEXP trong MySQL
Truy Vấn Con (SUBQUERY) và Biểu Thức Bảng Chung (CTE) Trong MySQL
Kết Hợp Dữ Liệu Từ Nhiều Bảng Với JOIN Trong MySQL
Truy Vấn Dữ Liệu Với SELECT Trong MySQL
Các Lệnh DML Cơ Bản Trong MySQL: INSERT, UPDATE, DELETE

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

Truy Vấn Dữ Liệu Với SELECT Trong MySQL

Các Lệnh DML Cơ Bản Trong MySQL: INSERT, UPDATE, DELETE

TCL Trong MySQL – Quản Lý Giao Dịch Với COMMIT, ROLLBACK, SAVEPOINT

DCL Trong MySQL – Quản Lý Quyền Truy Cập Với GRANT và REVOKE

FUNCTION Trong MySQL – Định Nghĩa Hàm Tùy Chỉnh Trả Về Giá Trị

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×