Hàm SUM() trong MySQL

Hàm SUM() trong MySQL
Hàm SUM() trong MySQL

Chức năng của Hàm SUM() trong MySQL

Hàm SUM() trong MySQL được sử dụng để lấy ra tổng của các giá trị trong một cột, hàm SUM() sẽ kết với từ khóa AS để tạo bí danh cho một giá trị, giúp cho việc lấy dữ liệu tiện lợi hơn, hàm SUM() thường được dùng kết hợp với mệnh đề GROUP BY để lấy tổng của từng nhóm.

Code Hàm SUM() trong MySQL

select SUM(gia) as tonggia from tb_sanpham;
select id_cha1,SUM(gia) as tonggia from tb_sanpham where hienthi=1 GROUP BY id_cha1;
<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'xgZwEfQWE'; // Mật khẩu
   // Kết nối đến tên username
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   if(! $conn ){
     die('Không kết nối được: ' . mysql_error());
   }
   // Chọn tên database
   mysql_select_db('webmoi_tendata');
   // Xét kiểu tiếng việt 
   mysql_query('SET NAMES "utf8"');
   // SUM(gia)
   echo "<b>SUM(gia)</b><br>";
   $sql ="select SUM(gia) as tonggia from tb_sanpham";
   $ketquamot = mysql_query($sql,$conn);
   if(!$ketquamot){
	  die('Không thể lấy dữ liệu: ' . mysql_error());  
   }
   $tonggiact = mysql_fetch_array($ketquamot, MYSQL_ASSOC);
   echo "Tổng giá: ".number_format($tonggiact['tonggia'],0,"",".")."<br>";
   // SUM(gia) trong GROUP BY id_cha1
   echo "<b>SUM(gia) trong GROUP BY id_cha1</b><br>";
   $sql ="select id_cha1,SUM(gia) as tonggia from tb_sanpham where hienthi=1 GROUP BY id_cha1";
   $ketquahai = mysql_query($sql,$conn);
   if(!$ketquahai){
	  die('Không thể lấy dữ liệu: ' . mysql_error());  
   }
   // Dùng vòng lặp để lấy ra từng hàng trong bảng	
	while($row = mysql_fetch_array($ketquahai, MYSQL_ASSOC)){
		 echo "ID Cha cấp một: {$row['id_cha1']} <br> ".
		 "Tổng giá: ".number_format($row['tonggia'],0,"",".")." <br> ".
         "--------------------------------<br>";
   }
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

SUM(gia)
Tổng giá: 160.650.000
SUM(gia) trong GROUP BY id_cha1
ID Cha cấp một: 1
Tổng giá: 154.550.000
--------------------------------
ID Cha cấp một: 2
Tổng giá: 6.100.000
--------------------------------

Các trường hợp sử dụng Hàm SUM() trong MySQL

Hàm SUM() không chỉ dùng để cộng toàn bộ giá trị trong một cột. Khi kết hợp với các mệnh đề như WHERE, GROUP BY và HAVING, hàm này có thể xử lý nhiều nhu cầu thống kê dữ liệu như tính doanh thu, tổng số lượng sản phẩm hoặc tổng giá trị theo từng nhóm.

Tính tổng giá trị trong một cột

Đây là cách sử dụng cơ bản nhất của SUM(). Hàm sẽ cộng các giá trị số trong cột được chỉ định và trả về một kết quả tổng duy nhất. Cách này phù hợp khi cần nhanh chóng biết tổng doanh thu, tổng tiền hoặc tổng số lượng của toàn bộ dữ liệu.

SELECT SUM(gia) AS tong_gia
FROM san_pham;

Trong ví dụ trên, SUM() tính tổng các giá trị trong cột gia của bảng san_pham. Đặt bí danh tong_gia giúp tên cột kết quả dễ hiểu hơn khi hiển thị.

Tính tổng theo từng nhóm dữ liệu với GROUP BY

Khi muốn biết tổng giá trị của từng nhóm thay vì cộng tất cả dữ liệu thành một kết quả, có thể kết hợp SUM() với GROUP BY. Mỗi nhóm sẽ nhận được một giá trị tổng riêng.

SELECT danh_muc, SUM(gia) AS tong_gia
FROM san_pham
GROUP BY danh_muc;

Câu lệnh trên phân loại sản phẩm theo danh_muc, sau đó tính tổng giá của từng nhóm. Đây là cách thường dùng khi cần lập báo cáo doanh thu hoặc thống kê dữ liệu theo danh mục.

Tính tổng dữ liệu theo điều kiện với WHERE

WHERE giúp giới hạn những bản ghi được đưa vào phép tính. Nhờ đó, SUM() có thể chỉ tính tổng các dữ liệu đáp ứng một điều kiện cụ thể thay vì toàn bộ bảng.

SELECT SUM(gia) AS tong_gia
FROM san_pham
WHERE trang_thai = 'con_hang';

Ở đây, chỉ những sản phẩm có trạng thái con_hang mới được tính vào tổng. Cách kết hợp này hữu ích khi cần thống kê một phần dữ liệu theo trạng thái, thời gian hoặc một tiêu chí xác định.

Kết hợp SUM() với HAVING để lọc kết quả tổng

HAVING phù hợp khi cần lọc các nhóm dựa trên chính giá trị được SUM() tính toán. Điểm quan trọng là WHERE lọc bản ghi trước khi nhóm dữ liệu, còn HAVING lọc kết quả sau khi GROUP BY đã tạo ra các nhóm.

SELECT danh_muc, SUM(gia) AS tong_gia
FROM san_pham
GROUP BY danh_muc
HAVING SUM(gia) > 10000000;

Ví dụ trên chỉ giữ lại những danh mục có tổng giá trị lớn hơn 10.000.000. Cách viết này đặc biệt hữu ích trong các báo cáo cần tìm những nhóm có tổng doanh thu hoặc tổng giá trị vượt qua một mức nhất định.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Hàm SUM() trong MySQL.

Tải file database .sql về nếu muốn kiểm tra hoặc thực hành Tải về.

  • 0 Bình luận
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Hàm SUM() trong MySQL
Email, Điện thoại 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 *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !