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 SELECT
cá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 |
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
, MAX
và AVG
.
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 :)