Hàm tổng hợp trong MySQL
Chức năng tổng hợp là tất cả về
- 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 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) ĐẾM
2) TỔNG
3) AVG
4) PHÚT
5) TỐI ĐA
Tại sao nên sử dụng hàm tổng hợp
Theo quan điểm 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 thường quan tâm đến việc biết toàn bộ số liệu và không nhất thiết phải biết các chi tiết riêng lẻ.
Các hàm tổng hợp cho phép chúng ta 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 được 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 ta 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.
Chúng ta hãy xem xét các hàm tổng hợp một cách chi tiết.
COUNT hàm
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ố. Theo mặc định, tất cả các hàm tổng hợp đều loại trừ các giá trị null trước khi xử lý dữ liệu.
COUNT (*) là cách triển khai đặc biệt của hàm COUNT trả về số lượng tất cả các hàng trong một bảng được chỉ định. COUNT (*) cũng xem xét Không có gì và trùng lặp.
Bảng hiển thị bên dưới hiển thị dữ liệu trong bảng cho thuê phim
số tham chiếu | Ngày Giao dịch | ngày trở lại | số thành viên_ | id phim | phim_ đã quay lại |
---|---|---|---|---|---|
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ử chúng ta muốn biết số lần phim có id 2 đã được thuê
SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;
Thực hiện truy vấn trên trong MySQL bàn làm việc 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 kết quả trùng lặp khỏi kết quả của mình. Đ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ề Distinct, 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, phân 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 đã 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 ta được phát hành, chúng ta có thể sử dụng MySQL' MIN để 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 MySQL workbench so với myflixdb cung cấp 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 đã chỉ định.
Giả sử chúng ta muốn biết năm mà bộ phim mới nhất trong cơ sở dữ liệu của chúng ta đượ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 phát hành phim mới nhất.
SELECT MAX(`year_released`) FROM `movies`;
Thực hiện truy vấn trên trong MySQL workbench sử dụng myflixdb cung cấp cho chúng ta kết quả sau.
MAX('year_released') |
---|
2012 |
Hàm SUM
Giả sử chúng ta muốn 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 ta có thể sử dụng MySQL TÓM TẮT chức năng nào 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 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 | Mô tả | số tiền_ đã trả | bên ngoài_ số _tham chiếu |
---|---|---|---|---|---|
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 | NULL |
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 để 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 MySQL so sánh workbench với myflixdb cho kết quả như sau.
SUM('amount_paid') |
---|
10500 |
AVG chức năng
MySQL AVG chức năng 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 được trả. Chúng ta 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 MySQL workbench cung cấp cho chúng ta kết quả sau.
AVG('amount_paid') |
---|
3500 |
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 xem sao!
Ví dụ sau đây nhóm các thành viên theo tên, đếm tổng số khoả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 hiện ví dụ trên trong MySQL workbench cung cấp cho chúng ta kết quả sau.
Tổng kết
- 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.
- TỔNG và AVG chức năng 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ả của hàm tổng hợp, hãy sử dụng từ khóa DISTINCT. Từ khóa ALL bao gồm cả những bản sao. Nếu không có gì được chỉ định thì ALL đượ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ư NHÓM THEO