Hàm tổng hợp sẽ cho phép
- Thực hiện tính toán trên nhiều hàng
- Của một cột duy nhất của một bảng
- Và trả về một giá trị duy nhất.
Tiêu chuẩn ISO xác định năm (5) hàm tổng hợp cụ thể là;
1) COUNT
2) SUM
3) AVG
4) MIN
5) MAX
Tại sao 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ó 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 các chi tiết riêng lẻ.
> Hàm tổng hợp cho phép chúng tôi dễ dàng tạo dữ liệu tóm tắt từ cơ sở dữ liệu của chúng tôi.
Chẳng hạn, 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 được thuê ít nhất
- Phim được thuê nhiều nhất.
- Số lượng trung bình mà mỗi bộ phim được thuê trong một tháng.
Chúng tôi dễ dàng tạo ra 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 cột được chỉ định. Nó hoạt động trên cả hai loại 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ề số lượng của tất cả các hàng trong một bảng được chỉ định. COUNT (*) cũng tính tới cả giá trị Nulls và trùng lặp.
Bảng hiển thị dưới đây cho thấy dữ liệu trong bảng Movierentals
reference_ number | transaction_ date | return_date | membership_ number | movie_id | movie_ returned |
11 | 20-06-2012 | NULL | 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 | NULL | 3 | 3 | 0 |
Giả sử rằng chúng tôi muốn biết số lần được thuê của phim có movie_id là 2 thì tôi viết
CHỌN COUNT (`movie_id`) TỪ` Movierentals` WHERE` movie_id` = 2;
Thực hiện truy vấn trên trong bàn làm việc của MySQL đối với myflixdb cho chúng ta các kết quả sau.
Từ khóa DISTINCT
Từ khóa DISTINCT cho phép chúng tôi bỏ qua các bản sao từ 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 Phân biệt, hãy thực hiện một truy vấn đơn giản
CHỌN `movie_id` TỪ` Movierentals`;
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ị dưới đây, riêng biệt bỏ qua các bản ghi trùng lặp từ các kết quả
Hàm MIN
Hàm MIN trả về giá trị nhỏ nhất trong cột đã chỉ định .
Ví dụ: giả sử chúng ta muốn biết năm mà bộ phim lâu đời nhất trong thư viện của chúng tôi được phát hành, 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 hiện truy vấn trên trong bàn làm việc của MySQL đối với myflixdb cho chúng ta các 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ừ đã chỉ định .
Giả sử chúng ta muốn có được năm 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 đây trả về năm phim mới nhất được phát hành.
SELECT MAX(`year_released`) FROM `movies`;
Thực hiện truy vấn trên trong bàn làm việc của MySQL bằng myflixdb cho chúng ta các kết quả sau.
MAX('year_released') |
2012 |
Hàm SUM
Giả sử chúng tôi muốn một báo cáo cung cấp tổng số tiền thanh toán được 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ị Null được loại trừ khỏi kết quả trả về.
Bảng sau đây cho thấy dữ liệu trong bảng thanh toán-
payment_ id | membership_ number | payment_ date | description | amount_ paid | external_ reference _number |
1 | 1 | 23-07-2012 | Movie rental payment | 2500 | 11 |
2 | 1 | 25-07-2012 | Movie rental payment | 2000 | 12 |
3 | 3 | 30-07-2012 | Movie rental payment | 6000 | NULL |
Truy vấn hiển thị bên dưới nhận được tất cả các khoản thanh toán được thực hiện và tính tổng chúng để trả về một kết quả duy nhất.
SELECT SUM(`amount_paid`) FROM `payments`;
Thực hiện truy vấn trên trong bàn làm việc của MySQL đối với myflixdb cho kết quả như sau.
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 . Giống như hàm SUM, nó chỉ hoạt động trên các loại dữ liệu số .
Giả sử chúng ta muốn tìm số tiền trung bình được trả. Chúng tôi có thể sử dụng truy vấn sau -
SELECT AVG(`amount_paid`) FROM `payments`;
Thực hiện truy vấn trên trong bàn làm việc của MySQL, cho chúng ta các kết quả sau.
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ác bản sao. 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 cùng với các mệnh đề SQL khác, chẳng hạn như GROUP BY
Teaser não
Bạn nghĩ rằng các hàm tổng hợp là dễ dàng. Thử đi!
Ví dụ sau đây nhóm các thành viên theo tên, đếm tổng số 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 hiện ví dụ trên trong bàn làm việc của MySQL cho chúng ta các kết quả sau.
Đăng nhận xét