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

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.

AVG chức năng

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