Tags:

Hàm tổng hợp dữ liệu – Aggregate Functions trong SQL

Trong hệ quản trị cơ sở dữ liệu, các hàm tổng hợp là một hàm trong đó các giá trị của nhiều hàng được gom nhóm lại với nhau để làm đầu vào cho các tiêu chí nhất định để tạo thành một giá trị duy nhất có ý nghĩa quan trọng hơn.

Chúng ta có các hàm tổng hợp thường xuyên sử dụng sau:

  • Count
  • Sum
  • Avg
  • Min
  • Max

Hàm Count trong SQL

Hàm COUNT trong SQL là hàm đơn giản nhất và rất hữu ích trong việc đếm số lượng bản ghi, được mong đợi sẽ được trả về bởi một câu lệnh SELECT.

Gỉa sử chúng ta có bảng employee_tbl sau:

+------+------+------------+--------------------+
| id   | name | work_date  | daily_typing_pages |
+------+------+------------+--------------------+
|    1 | John | 2007-01-24 |                250 |
|    2 | Ram  | 2007-05-27 |                220 |
|    3 | Jack | 2007-05-06 |                170 |
|    3 | Jack | 2007-04-06 |                100 |
|    4 | Jill | 2007-04-06 |                220 |
|    5 | Zara | 2007-06-06 |                300 |
|    5 | Zara | 2007-02-06 |                350 |
+------+------+------------+--------------------+

Bây giờ, giả sử dựa trên bảng trên, chúng ta muốn đếm tổng số hàng trong bảng này, thì bạn có thể làm như sau

SQL>SELECT COUNT(*) FROM employee_tbl ;
+----------+
| COUNT(*) |
+----------+
|        7 |
+----------+
1 row in set (0.01 sec)

Tương tự, nếu bạn muốn đếm số lượng bản ghi có name là Zara, thì có thể thực hiện như sau:

SQL>SELECT COUNT(*) FROM employee_tbl
   -> WHERE name="Zara";
+----------+
| COUNT(*) |
+----------+
|        2 |
+----------+

Hàm Sum trong SQL

Hàm SUM trong SQL được sử dụng để tính tổng của một trường trong các bản ghi khác nhau.

Cũng với bảng dữ liệu trên

+------+------+------------+--------------------+
| id   | name | work_date  | daily_typing_pages |
+------+------+------------+--------------------+
|    1 | John | 2007-01-24 |                250 |
|    2 | Ram  | 2007-05-27 |                220 |
|    3 | Jack | 2007-05-06 |                170 |
|    3 | Jack | 2007-04-06 |                100 |
|    4 | Jill | 2007-04-06 |                220 |
|    5 | Zara | 2007-06-06 |                300 |
|    5 | Zara | 2007-02-06 |                350 |
+------+------+------------+--------------------+
Bây giờ, giả sử dựa trên bảng trên, chúng ta muốn tính tổng tất cả các trang dialy_typing_pages chúng ta có thể làm như sau:
SQL> SELECT SUM(daily_typing_pages)
   -> FROM employee_tbl;
+-------------------------+
| SUM(daily_typing_pages) |
+-------------------------+
|                    1610 |
+-------------------------+

Bạn có thể lấy tổng các bản ghi khác nhau dựa trên mệnh đề GROUP BY. Ví dụ sau sẽ tổng hợp tất cả các bản ghi liên quan đến một người duy nhất và bạn sẽ có tổng số trang được đánh máy bởi mỗi người.

SQL> SELECT name, SUM(daily_typing_pages)
   -> FROM employee_tbl GROUP BY name;
+------+-------------------------+
| name | SUM(daily_typing_pages) |
+------+-------------------------+
| Jack |                     270 |
| Jill |                     220 |
| John |                     250 |
| Ram  |                     220 |
| Zara |                     650 |

Hàm Avg trong SQL

Hàm AVG trong SQL được sử dụng để tính giá trị trung bình của một trường trong các bản ghi khác nhau.

Với bảng dữ liệu sau

SQL> SELECT * FROM employee_tbl;
+------+------+------------+--------------------+
| id   | name | work_date  | daily_typing_pages |
+------+------+------------+--------------------+
|    1 | John | 2007-01-24 |                250 |
|    2 | Ram  | 2007-05-27 |                220 |
|    3 | Jack | 2007-05-06 |                170 |
|    3 | Jack | 2007-04-06 |                100 |
|    4 | Jill | 2007-04-06 |                220 |
|    5 | Zara | 2007-06-06 |                300 |
|    5 | Zara | 2007-02-06 |                350 |
+------+------+------------+--------------------+

Chúng ta muốn tính trung bình của tất cả các trang dialy_typing_pages, thì bạn có thể làm như vậy bằng cách sử dụng lệnh sau:

SQL> SELECT AVG(daily_typing_pages)
    -> FROM employee_tbl;
+-------------------------+
| AVG(daily_typing_pages) |
+-------------------------+
|                230.0000 |
+-------------------------+

Bạn có thể lấy trung bình của các bản ghi khác nhau được thiết lập bằng mệnh đề GROUP BY. Ví dụ sau sẽ lấy trung bình tất cả các bản ghi liên quan đến một người và bạn sẽ có các trang được đánh trung bình bởi mỗi người

SQL> SELECT name, AVG(daily_typing_pages)
   -> FROM employee_tbl GROUP BY name;
+------+-------------------------+
| name | AVG(daily_typing_pages) |
+------+-------------------------+
| Jack |                135.0000 |
| Jill |                220.0000 |
| John |                250.0000 |
| Ram  |                220.0000 |
| Zara |                325.0000 |

Hàm Min trong SQL

Hàm MIN trong SQL được sử dụng để tìm ra bản ghi có giá trị nhỏ nhất trong một tập hợp bản ghi.

Ví dụ chúng ta có thể tìm ra số lượng daily_typing_pages nhỏ nhất của từng người

SQL> SELECT id, name, work_date, MIN(daily_typing_pages)
    -> FROM employee_tbl GROUP BY name;
+------+------+-------------------------+
| id   | name | MIN(daily_typing_pages) |
+------+------+-------------------------+
|    3 | Jack |                     100 |
|    4 | Jill |                     220 |
|    1 | John |                     250 |
|    2 | Ram  |                     220 |
|    5 | Zara |                     300 |
+------+------+-------------------------+

Hàm Max trong SQL

Hàm Max trong SQL được sử dụng để tìm ra bản ghi có giá trị lớn nhất trong một tập hợp bản ghi.

Ví dụ chúng ta có thể tìm ra số lượng daily_typing_pages lớn nhất của từng người

SQL> SELECT id, name, MAX(daily_typing_pages)
    -> FROM employee_tbl GROUP BY name;
+------+------+-------------------------+
| id   | name | MAX(daily_typing_pages) |
+------+------+-------------------------+
|    3 | Jack |                     170 |
|    4 | Jill |                     220 |
|    1 | John |                     250 |
|    2 | Ram  |                     220 |
|    5 | Zara |                     350 |
+------+------+-------------------------+

Nguồn tham khảo

https://www.tutorialspoint.com/sql/sql-avg-function.htm

https://www.tutorialspoint.com/sql/sql-count-function.htm

https://www.tutorialspoint.com/sql/sql-sum-function.htm

https://www.tutorialspoint.com/sql/sql-min-function.htm

 

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x