Các hàm tổng hợp là tất cả về
- Thực hiện các phép tính trên nhiều hàng
- Của một cột duy nhất của bảng
- Và trả về một giá trị duy nhất.
Tiêu chuẩn ISO xác định năm (5) chức năng tổng hợp cụ thể là;
1) COUNT
3) AVG
4
) TỐI THIỂU 5) TỐI ĐA
Tại sao phải sử dụng hàm tổng hợp.
Từ góc độ kinh doanh, các cấp tổ chức khác nhau có các yêu cầu thông tin khác nhau. Các nhà quản lý cấp cao nhất thường quan tâm đến việc biết toàn bộ số liệu và không cần thiết đến các chi tiết riêng lẻ.
> Các hàm tổng hợp cho phép chúng tôi dễ dàng tạo ra dữ liệu tóm tắt từ cơ sở dữ liệu của mình.
Ví dụ: từ cơ sở dữ liệu myflix của chúng tôi, ban quản lý có thể yêu cầu các báo cáo sau
- Phim thuê ít nhất.
- Phim được thuê nhiều nhất.
- Con số trung bình mà mỗi bộ phim được thuê trong một tháng.
Chúng tôi dễ dàng tạo các báo cáo trên bằng cách sử dụng các hàm tổng hợp.
Hãy xem xét các hàm tổng hợp một cách chi tiết.
Hàm COUNT
Hàm COUNT trả về tổng số giá trị trong trường được chỉ định. Nó hoạt động trên cả kiểu dữ liệu số và không phải số. Tất cả các hàm tổng hợp theo mặc định loại trừ các giá trị null trước khi làm việc trên dữ liệu.
COUNT (*) là một triển khai đặc biệt của hàm COUNT trả về tổng số của tất cả các hàng trong một bảng được chỉ định. COUNT (*) cũng coi là Null và trùng lặp.
Bảng hiển thị bên dưới cho thấy dữ liệu trong bảng các nhà làm phim
số tham chiếu | Ngày Giao dịch | ngày trở lại | số_thành viên | movie_id | phim_ đã trở lại |
---|---|---|---|---|---|
11 | 20-06-2012 | VÔ GIÁ TRỊ | 1 | 1 | 0 |
12 | 22-06-2012 | 25-06-2012 | 1 | 2 | 0 |
13 | 22-06-2012 | 25-06-2012 | 3 | 2 | 0 |
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |
15 | 23-06-2012 | VÔ GIÁ TRỊ | 3 | 3 | 0 |
Giả sử rằng chúng ta muốn lấy số lần bộ phim có id 2 được thuê hết
SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;
Thực thi truy vấn trên trong MySQL workbench so với myflixdb cho chúng ta kết quả sau.
COUNT('movie_id') |
---|
3 |
Từ khóa DISTINCT
Từ khóa DISTINCT cho phép chúng tôi loại bỏ các từ khóa trùng lặp khỏi kết quả của chúng tôi. Điều này đạt được bằng cách nhóm các giá trị tương tự lại với nhau.
Để đánh giá cao khái niệm về Sự khác biệt, hãy thực hiện một truy vấn đơn giản
SELECT `movie_id` FROM `movierentals`;
movie_id |
---|
1 |
2 |
2 |
2 |
3 |
Bây giờ, hãy thực hiện cùng một truy vấn với từ khóa riêng biệt -
SELECT DISTINCT `movie_id` FROM `movierentals`;
Như được hiển thị bên dưới, khác biệt loại bỏ các bản ghi trùng lặp khỏi kết quả.
movie_id |
---|
1 |
2 |
3 |
Hàm MIN
Hàm MIN trả về giá trị nhỏ nhất trong trường bảng được chỉ định .
Ví dụ, giả sử chúng ta muốn biết năm phát hành bộ phim cũ nhất trong thư viện của chúng ta, chúng ta có thể sử dụng hàm MIN của MySQL để có được thông tin mong muốn.
Truy vấn sau đây giúp chúng tôi đạt được điều đó
SELECT MIN(`year_released`) FROM `movies`;
Thực thi truy vấn trên trong MySQL workbench so với myflixdb cho chúng ta kết quả sau.
MIN('year_released') |
---|
2005 |
Hàm MAX
Đúng như tên gọi, hàm MAX ngược lại với hàm MIN. Nó trả về giá trị lớn nhất từ trường bảng được chỉ định .
Giả sử chúng tôi muốn lấy năm bộ phim mới nhất trong cơ sở dữ liệu của chúng tôi được phát hành. Chúng ta có thể dễ dàng sử dụng hàm MAX để đạt được điều đó.
Ví dụ sau trả về năm phim mới nhất được phát hành.
SELECT MAX(`year_released`) FROM `movies`;
Thực thi truy vấn trên trong MySQL workbench bằng myflixdb cho chúng ta kết quả sau.
MAX('year_released') |
---|
2012 |
Hàm SUM
Giả sử chúng ta muốn có một báo cáo cung cấp tổng số tiền thanh toán đã thực hiện cho đến nay. Chúng tôi có thể sử dụng MySQL SUM chức năng mà trả về tổng của tất cả các giá trị trong cột được chỉ định . SUM chỉ hoạt động trên các trường số . Giá trị rỗng bị loại trừ khỏi kết quả trả về.
Bảng sau đây hiển thị dữ liệu trong bảng thanh toán-
id thanh toán | số_thành viên | ngày thanh toán | sự miêu tả | số tiền_ đã trả | số tham chiếu_ bên ngoài |
---|---|---|---|---|---|
1 | 1 | 23-07-2012 | Thanh toán tiền thuê phim | 2500 | 11 |
2 | 1 | 25-07-2012 | Thanh toán tiền thuê phim | 2000 | 12 |
3 | 3 | 30-07-2012 | Thanh toán tiền thuê phim | 6000 | VÔ GIÁ TRỊ |
Truy vấn hiển thị bên dưới lấy tất cả các khoản thanh toán được thực hiện và tổng hợp chúng lại để trả về một kết quả duy nhất.
SELECT SUM(`amount_paid`) FROM `payments`;
Thực thi truy vấn trên trong MySQL workbench so với myflixdb cho kết quả sau.
SUM('amount_paid') |
---|
10500 |
Chức năng AVG
Hàm AVG của MySQL trả về giá trị trung bình của các giá trị trong một cột được chỉ định . Cũng giống như hàm SUM, nó chỉ hoạt động trên các kiểu dữ liệu số .
Giả sử chúng ta muốn tìm số tiền trung bình phải trả. Chúng ta có thể sử dụng truy vấn sau:
SELECT AVG(`amount_paid`) FROM `payments`;
Thực thi truy vấn trên trong MySQL workbench, cho chúng ta các kết quả sau.
AVG('amount_paid') |
---|
3500 |
Tóm lược
- MySQL hỗ trợ tất cả năm (5) hàm tổng hợp tiêu chuẩn ISO COUNT, SUM, AVG, MIN và MAX.
- Các hàm SUM và AVG chỉ hoạt động trên dữ liệu số.
- Nếu bạn muốn loại trừ các giá trị trùng lặp khỏi kết quả hàm tổng hợp, hãy sử dụng từ khóa DISTINCT. Từ khóa TẤT CẢ bao gồm các từ khóa thậm chí trùng lặp. Nếu không có gì được chỉ định, TẤT CẢ được coi là mặc định.
- Các hàm tổng hợp có thể được sử dụng kết hợp với các mệnh đề SQL khác như GROUP BY
Teaser não
Bạn nghĩ rằng các chức năng tổng hợp là dễ dàng. Thử cái này!
Ví dụ sau nhóm các thành viên theo tên, đếm tổng số lần thanh toán, số tiền thanh toán trung bình và tổng số tiền thanh toán.
SELECT m.`full_names`,COUNT(p.`payment_id`) AS `paymentscount`,AVG(p.`amount_paid`) AS `averagepaymentamount`,SUM(p.`amount_paid`) AS `totalpayments` FROM members m, payments p WHERE m.`membership_number` = p.`membership_number` GROUP BY m.`full_names`;
Thực thi ví dụ trên trong MySQL workbench cho chúng ta kết quả sau.