Hàm AVG trong SQL Server

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

Nếu đang tìm hiểu ngành nghề nào được “săn đón” nhất hiện nay, nhất định bạn sẽ nhận được nhiều câu trả lời về lập trình. Đây là cái nôi cho sự ra đời của rất nhiều sản phẩm, ứng dụng, trang web… khiến cuộc sống của con người trở nên thú vị hơn.

Thế giới lập trình vô cùng đa dạng và phong phú với nhiều ngôn ngữ khác nhau. Bạn không nhất thiết phải nắm vững tất cả, chỉ cần gắn liền với những lựa chọn phù hợp nhất. Tuy nhiên, nhất định cần biết về SQL Server.

SQL Server là một phương thức mà bất kỳ ai làm lập trình cũng cần biết. Giống như Python, SQL Server có rất nhiều hàm với chức năng khác nhau. Bạn cần hiểu rõ về chúng để sử dụng SQL Server thật tốt.

Bài viết này sẽ hướng dẫn chi tiết cho bạn cách sử dụng hàm xử lý số AVG() trong SQL Server với cú pháp và những ví dụ cụ thể để dễ hình dung và nắm bắt hàm tốt hơn.

Hàm AVG() trong SQL Server là gì?

Hàm tính trung bình trong SQL Server là một phần của hàm tổng hợp. Hàm này được dùng để tính giá trị trung bình của một biểu thức. Hàm này bỏ qua các giá trị NULL. Tuy nhiên, khi tập kết quả không có bất kỳ hàng nào, nó trả về NULL. Hàm tính trung bình SQL Server luôn được dùng với lệnh SELECT. Hàm này chỉ chấp nhận một tham số, có thể là cột hoặc một biểu thức hợp lệ và trả về một kết quả đơn lẻ để tóm tắt tập dữ liệu nhập vào. Nó cũng có thể hoạt động với mệnh đề WHERE, GROUP BY, ORDER BY và HAVING để cho kết quả được lọc.

Đặc điểm nổi bật của hàm AVG() trong SQL Server

  • Hàm này được dùng để tìm giá trị trung bình của biểu thức cụ thể.
  • Hàm này nằm trong các hàm số.
  • Hàm này chỉ chấp nhận một tham số, đó là biểu thức.
  • Hàm này bỏ qua các giá trị NULL.

Công thức:

AVG(expression)

Ví dụ mẫu cơ bản:

CREATE TABLE product
(
user_id int IDENTITY(100, 2) NOT NULL,
product_1 VARCHAR(10),
product_2 VARCHAR(10),
price int
);
INSERT product(product_1, price)
VALUES ('rice', 400);

INSERT product(product_2, price)
VALUES ('grains', 600);

SELECT AVG(price) FROM product;

Kết quả: 50

Giờ hãy cùng Quantrimang.com xem xét một giá trị thực tế:

Để tính giá trị trung bình, ta sử dụng hàm AVG trong SQL Server cú pháp như sau:

SELECT AVG(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 trung bình
  • 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 AVG 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 AVG trong SQL Server.

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

bảng dữ liệu

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

SELECT AVG(Sobai) AS "So bai trung binh"
FROM Quantrimang
WHERE Sobai > 100;

Result: So bai trung binh 128.2

Ở ví dụ này ta tính giá trị trung bình cho tất cả các giá trị có trong dữ liệu cần tính, nên kết quả trung bình được tính như sau, lấy tổng của cột Sobai sau đó chia cho tổng số dòng có dữ liệu khác rỗng có giá trị lớn hơn 100.

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

SELECT AVG(DISTINCT Sobai) AS "So bai trung binh"
FROM Quantrimang
WHERE Sobai > 100;

Result: So bai trung binh 135

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ả trung bình được tính như sau:

(152 + 101 + 122 + 165)/4 = 135

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

Để tính giá trị trung bình 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ị trung bình 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, AVG(Sobai) AS "So bai trung binh"
FROM Quantrimang
GROUP BY Chuyenmuclon;

Result:
Chuyenmuclon So bai trung binh
Laptrinh 108
Mang xa hoi 158.5
Trinh duyet web 94

Ví dụ 4: Hàm AVERAGE với mệnh đề HAVING

SQL Server dùng mệnh đề HAVING để lọc các hàng theo nhóm, mệnh đề này luôn cần tới GROUP BY để cho kết quả. Ví dụ bên dưới sẽ dùng mệnh đề HAVING với hàm AVG(). Nó tính trung bình giờ làm việc của nhân viên ở mỗi ngành nghề, sau đó kiểm tra hàm tổng hợp này xem nó có lớn hơn 10 hay không. Nếu đúng, kết quả tương ứng trả về thứ tự tăng dần của giá trị trung bình được tổng hợp:

SELECT occupation, AVG(working_hours) AS "Average Working Hours"

FROM employee_info
GROUP BY occupation
HAVING AVG(working_hours)>10
ORDER BY AVG(working_hours);

Kết quả:

Chạy lệnh này sẽ trả về số giờ làm việc trung bình của nhân viên lớn hơn 10 theo từng công việc:

Kết quả dùng hàm avg với having

Hàm AVERAGE với ORDER BY

SQL Server dùng mệnh đề ORDER BY để phân loại bảng theo thứ tự tăng hoặc giảm dần. Ví dụ bên dưới sẽ dùng hàm AVG() với mệnh đề ORDER BY, tính giờ làm việc trung bình của nhân viên theo từng vị trí, rồi phân loại nhóm kết quả theo thứ tự giảm dần của giá trị trung bình được tổng hợp:

SELECT occupation, AVG(working_hours) AS "Average Working Hours"   
FROM employee_info  
GROUP BY occupation  
ORDER BY AVG(working_hours) DESC;  

Triển khai lệnh này sẽ hiện kết quả theo thứ tự giảm dần dựa trên giá trị trung bình được tổng hợp:

Hàm AVG trong SQL Server

Bài trước: Hàm ABS trong SQL Server

Bài tiếp: Hàm CEILING trong SQL Server

Thứ Tư, 11/10/2023 17:20
4,113 👨 52.107
0 Bình luận
Sắp xếp theo
    ❖ SQL Server