Hàm SUM trong SQL Server

Hàm SUM trong SQL Server

Hàm SUM trong SQL Server là gì? Cách dùng hàm SUM SQL Server như thế nào? Hãy cùng Quantrimang.com tìm hiểu nhé!

SQL Server là kiến thức bạn nhất định nên tìm hiểu nếu muốn trở thành một lập trình viên chuyên nghiệp bởi nó được sử dụng phổ biến trong lĩnh vực này.

Nhìn chung, học SQL Server không khó. Bạn dễ dàng tìm thấy những khóa học online hay hướng dẫn tự học trên Internet, Quantrimang.com là một trong số đó. Quantrimang sẽ cung cấp cho bạn những kiến thức cơ bản về SQL Server. Ở bài viết này, chúng ta hãy cùng nhau tìm hiểu về hàm tính tổng trong SQL Server nhé!

Câu lệnh SUM trong SQL Server là gì?

Nếu đang tìm cách tính tổng SQL, nhất định bạn phải biết cách dùng hàm SUM. Hàm SUM trong SQL Server là một kiểu hàm tổng hợp. Hàm này được dùng để tính giá trị tổng trong một nhóm dữ liệu của cột hay biểu thức được chỉ định.

Câu lệnh SUM trong SQL Server là một hàm có sẵn, chấp nhận một tham số đơn lẻ mà có thể là cột hoặc biểu thức hợp lệ và trả về một kết quả duy nhất để tóm tắt nhập bộ dữ liệu đầu vào. Hàm này bỏ qua giá trị NULL. Tuy nhiên, nó trả về NULL khi nhóm kết quả không có hàng. Nó cũng hoạt động với mệnh đề WHERE, GROUP BY, ORDER BY và HAVING.

Cú pháp

Để sử dụng hàm SUM trong SQL Server, ta dùng cú pháp như sau:

SELECT SUM(cot)FROM bang[WHERE dieukien];

Tham số:

  • cot: cột hoặc giá trị tính toán, biểu thức mà bạn muốn tính tổng
  • bang: bảng dùng để lấy bản ghi. Phải có ít nhất 1 bảng trong mệnh đề FROM.
  • dieukien: tùy chọn. Điều kiện mà bản ghi phải đáp ứng để được chọn.

Lưu ý:

  • Hàm SUM có thể được sử dụng trong các phiên bản sau của SQL Server: SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005.

Ví dụ

Hãy xem và khám phá một số ví dụ về hàm SUM trong SQL Server.

Giả sử, ta có bảng dữ liệu như sau:

Ví dụ 1: Tính tổng số lượng số bài viết của website Quantrimang

SELECT SUM(Sobai) AS "Tong so bai"FROM QuantrimangWHERE Sobai > 100;Result: Tong so bai 641

Ở ví dụ này ta cần đầu ra là giá trị tổng số bài của website, nên kết quả được tính bằng cách cộng tất cả giá trị ở cột Sobai có dữ liệu khác rỗng và lớn hơn 100 lại với nhau.

Ví dụ 2: Sử dụng DISTINCT

SELECT SUM(DISTINCT Sobai) AS "Tong so bai"FROM QuantrimangWHERE Sobai > 100;Result: Tong so bai 540

Ví dụ này dùng từ khóa DISTINCT, nên những giá trị lặp lại chỉ được tính một lần. Trong bảng dữ liệu cho trước, giá trị “101” xuất hiện 2 lần, nhưng chỉ được tính một lần, cho nên tổng số dòng được tính sẽ là 4, kết quả được tính như sau:

152 + 101 + 122 + 165 = 540

Ví dụ 3: Tính giá trị tổng theo cột được chỉ định của các dòng được chọn

Để tính giá trị tổng theo cột được chỉ định của các dòng được chọn, ta sử dụng mệnh đề GROUP BY.

Ví dụ sau tính giá trị tổng của tất cả bản ghi liên quan tới một chuyên mục lớn và bạn sẽ thực hiện như sau:

SELECT Chuyenmuclon, SUM(Sobai) AS "Tong so bai"FROM QuantrimangGROUP BY Chuyenmuclon;Result:Chuyenmuclon          Tong so baiLaptrinh              324Mang xa hoi           317Trinh duyet web       94

Hàm SUM SQL Server với mệnh đề WHERE

Mệnh đề WHERE được dùng để lọc các bản ghi một bảng. Ví dụ này sẽ dùng mệnh đề WHERE cùng hàm SUM() để tính tổng lương của nhân viên làm việc nhiều hơn 9 tiếng một ngày.

SELECT SUM(salary) AS "Total Salary"
FROM employee_info
WHERE working_hours>9;

Khi chạy truy vấn này, nó trả về kết quả sau:

Hàm SUM SQL với WHERE

Hàm SUM SQL Server với ORDER BY

ORDER BY được dùng để sắp xếp dữ liệu trong bảng theo thứ tự tăng hoặc giảm dần. Ví dụ bên dưới sẽ dùng hàm SUM() với ORDER BY, tính tổng số lương của nhân viên dựa trên từng công việc, rồi phân loại kết quả theo thứ tự tăng dần:

SELECT occupation, SUM(salary) AS "Total Salary"
FROM employee_info
GROUP BY occupation
ORDER BY SUM(salary);

Kết quả:

Hàm SUM SQL với ORDER BY

Hàm SUM với OVER()

Mệnh đề OVER() xác định số hàng từ truy vấn được áp dụng cho hàm đó, theo thứ tự hàm đánh giá chúng và khi các phép tính của hàm được khởi động lại. Truy vấn bên dưới cung cấp tổng doanh số tích lũy cho từng công việc ở bảng employee_info:

SELECT DISTINCT occupation,
SUM(salary) OVER (PARTITION BY occupation) AS "Total Salary"
FROM employee_info;

Dùng hàm SUM với Over

Dùng trong trường hợp cột có giá trị NULL

Với bất kỳ ai đã quen dùng hàm SUM() SQL đều biết, nó bỏ qua giá trị NULL từ cột số bất kỳ trong suốt quá trình tính toán. Ví dụ sau sẽ cho bạn thấy rõ điều đó. Đầu tiên, chèn một số hàng bổ sung chứa giá trị NULL, sau đó liệt kê tất cả giá trị từ bảng này để xác minh kết quả đầu ra tiếp theo.

Lệnh đầu tiên hiện toàn bộ giá trị từ bảng Sales và truy vấn thứ hai bổ sung tất cả giá trị được lưu ở cột Price & Quantity để chứng minh hàm tính tổng SQL Server bỏ qua các giá trị NULL.

SELECT * FROM Sales
GO
SELECT SUM(Price) AS [Total Sales],
SUM(Quantity) AS [Total units]
FROM Sales

Bạn có thể thấy giá trị NULL ở cả hai cột được trả về bởi truy vấn đầu tiên và thứ hai đã trả về tổng các giá trị được lưu ở cột Price & Quantity. Bạn có thể thấy giá trị NULL không được tính tới trong khi trả về kết quả này:

Ví dụ về cách dùng lệnh tính tổng SQL Server

Nguồn tin: Quantrimang.com: