(28-01-15, 08:02 PM)anbeetee Đã viết: mọi người giúp dùm mình chỉ mình làm câu này
https://www.dropbox.com/s/oa4luixo52w148...accdb?dl=0
https://www.dropbox.com/s/0pkody13kbbspr...n.jpg?dl=0
Theo đề bài của bạn thì tính điểm trung bình thôi, làm gì có cao nhất nửa.
Giớ thiệu về các hàm:
Mã:
. SUM : Tính tổng các giá trị trong trường
. AVERAGE : Tính TB cộng các giá trị trong trường.
. MAX : Tính giá trị lớn nhất trong trường
. MIN : Tính giá trị nhỏ nhất trong trường
. COUNT : Đếm số giá trị khác rỗng trong trường
. STDEV : Tính độ lệch chuẩn các giá trị trong trường
. First : Tính giái trị đầu tiên trong trường
. Last : Tính giái trị cuối trong trường
Hoặc Bạn tham khảo bài này
Hàm AVG() tính giá trị trung bình trong sql của các giá trị trong một nhóm. Những giá trị null (rỗng/trống) bỏ qua, không tính.
Cú pháp:
Mã:
AVG ([ALL | DISTINCT] expression)
Trong đó:
ALL: tính giá trị trung bình cho tất cả các giá trị có trong dữ liệu cần tính. ALL được mặc định.
DISTINCT: chỉ tính trung bình trên những giá trị duy nhất, những giá trị lặp lại được tính là 1 lần.
expression: biểu thức tính giá trị trung bình, biểu thức phải là kiểu số (number), ngoại trừ kiểu dữ liệu bit. Những hàm tính gọp (aggregate functions) và truy vấn lồng (subqueries) không được hỗ trợ.
Giả sử bạn có bảng IS_SickBenefit lưu % các loại bảo hiểm để nhận bảo hiểm khi bạn ốm đau.
Bảng IS_SickBenefit gồm 3 cột sau:
- Index: kiểu int, khóa chính
- Type: kiểu nvarchar, lưu loại bảo hiểm được hưởng trợ cấp ốm đau
- PercentBenefit: kiểu double lưu phần trăm được hưởng trợ cấp ốm đau
Giả sử, ta có bảng dữ liệu như sau:
Index Type PercentBenefit
1 Bảng thân ốm ngắn ngày 75
2 Ốm dài ngày 75
3 Dưỡng sức 25
4 Con ốm 75
Bây giờ chúng ta sẽ tính giá trị trung bình cho % bảo hiểm được nhận, ta sử dụng cả ALL và DISTINCT
1
2
3
4
5
6
7
-- Câu 1: Dùng ALL
SELECT AVG(PercentBenefit) AS avgPercentage FROM IS_SickBenefit
-- => Kết quả: 62.5
-- Câu 2: Dùng DISTINCT
SELECT AVG(DISTINCT PercentBenefit) AS avgPercentage FROM IS_SickBenefit
-- Kết quả: 50
Giải thích:
- Câu 1: được hiểu ngầm là ALL (bạn có thể thêm từ ALL vào trước PercentBenefit trong câu truy vấn (query)), nên kết quả trung bình được tính như sau, lấy tổng của cột PercentBenefit sau đó chia cho tổng số dòng có dữ liệu khác rỗng (ở đây có 4 dòng từ dòng 1 đến dòng 4):
(75 + 75 + 25 + 75)/4 = 62.5
- Câu 2: 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ản dữ liệu trên 75% xuất hiện 3 lần, nhưng chỉ được tính một lần, cho nên tổng số dòng sẽ là 2 (1 của 75%, 1 của 25%), kết quả trung bình được tính như sau:
(75 + 25)/2 = 50
Chúc bạn thành công!