6.1 Danh sách các hàm tổng hợp

Khi bạn sử dụng nhóm hàng trong SQL với toán tử GROUP BY, bạn có thể sử dụng SELECTcác hàm trong câu lệnh hoạt động trên dữ liệu được nhóm. Các hàm như vậy còn được gọi là hàm tổng hợp.

Dưới đây là danh sách những cái phổ biến nhất:

# Chức năng Sự miêu tả
1 ĐẾM() Trả về số lượng giá trị trong một nhóm
2 TỔNG() Trả về tổng các giá trị trong một nhóm
3 TỐI ĐA() Trả về giá trị lớn nhất của một nhóm
4 TỐI THIỂU() Trả về giá trị nhỏ nhất của một nhóm
5 AVG() Trả về giá trị trung bình của một nhóm
6 BIT_AND() Thực hiện AND theo chiều bit trên tất cả các giá trị nhóm
7 BIT_OR() Thực hiện một bit OR trên tất cả các giá trị nhóm
số 8 BIT_XOR() Thực hiện XOR bitwise trên tất cả các giá trị nhóm
9 GROUP_CONCAT() Nối tất cả các giá trị nhóm thành một chuỗi
Đây không phải là danh sách đầy đủ các chức năng tổng hợp, nhưng phần còn lại rất cụ thể và tôi không nghĩ rằng bạn sẽ sử dụng chúng trong 5 năm tới. Nếu bạn vẫn cần chúng, bạn luôn có thể đọc tài liệu chính thức cho DBMS của mình.

Bây giờ hãy xem xét một số ví dụ với các hàm tổng hợp của chúng ta.

6.2 Phân tích tiền lương nhân viên

Hãy tính toán một số thống kê về nhân viên của chúng tôi từ bảng nhân viên .

Câu hỏi một: chúng ta có bao nhiêu nhân viên?

Nếu chúng ta muốn tìm ra số lượng của tất cả các bản ghi trong bảng, thì chúng ta có thể sử dụng hàm tổng hợp cho điều này COUNT. Yêu cầu sẽ trông như thế này:

SELECT COUNT(*) FROM employee

Và MySQL sẽ trả về số 6 như một phản hồi Chúng tôi có 6 nhân viên trong bộ phận, bao gồm cả một con mèo. Được rồi.

Câu hỏi hai: chúng ta trả bao nhiêu mỗi tháng cho tất cả nhân viên?

Để trả lời câu hỏi này, chúng ta cần tính tổng tiền lương của tất cả nhân viên. Để làm điều này, chúng tôi sử dụng chức năng tổng hợpSUM()

Yêu cầu sẽ trông như thế này:

SELECT SUM(salary) FROM employee

Lưu ý rằng lần này chúng tôi được yêu cầu chỉ định các giá trị của cột mà chúng tôi đang tóm tắt. Chúng tôi đã chỉ định một cột lương . Chúng ta không thể tính tổng tất cả các trường trong một bảng.

Và MySQL sẽ trả về số 461000 như một câu trả lời Chúng tôi có 6 nhân viên trong bộ phận và mức lương là 461 nghìn. Quá nhiều.

Và cuối cùng, câu hỏi thứ ba: mức lương tối đa và tối thiểu của chúng ta trong bộ phận là bao nhiêu? Vâng, hãy tính mức lương trung bình. Để làm được điều này, chúng ta cần các hàm MIN, MAXAVG.

Truy vấn lần này sẽ phức tạp hơn một chút và trông như thế này:

SELECT MIN(salary), AVG(salary), MAX(salary)
FROM employee

Kết quả của truy vấn này sẽ là:

MIN(lương) AVG(tiền lương) TỐI ĐA(lương)
1000 76833.3333 200000

Mức lương tối thiểu trong bộ phận của chúng tôi là 1.000 đô la - rất tốt. Mức lương tối đa là 200 nghìn, nhưng đây là giám đốc.

Nhưng mức lương trung bình quá cao, bạn cần bằng cách nào đó tối ưu hóa chi phí. Hãy thuê một con mèo khác và thế là xong :)