Hàm tổng hợp
Bài học 11 trên 13 trong khóa học SQL nâng cao của Coddy.
Các hàm tổng hợp dùng để tính AVG(), MAX() hoặc bất kỳ hàm tổng hợp nào khác cho đến hàng hiện tại.
Ví dụ, ta có thể tính doanh thu cao nhất đạt được tính đến từng kỳ cuối:
| tháng | doanh thu |
| 4 | 40 |
| 5 | 20 |
| 6 | 60 |
| 7 | 55 |
| 8 | 61 |
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1Kết quả trả về:
| tháng | doanh thu | max_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 40 |
| 6 | 60 | 60 |
| 7 | 55 | 60 |
| 8 | 61 | 61 |
Trong tháng 4 và 5, doanh thu cao nhất là 40; trong tháng 5 và 6, doanh thu cao nhất là 60; còn trong tháng 8, con số này là 61. Đó là vì khi tìm thấy doanh thu mới cao hơn, hàm loại bỏ giá trị cũ và dùng mức cao nhất tính đến lúc đó.
Với hàm AVG(), kết quả sẽ như sau:
SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1| tháng | doanh thu | avg_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 30 |
| 6 | 60 | 40 |
| 7 | 55 | 43.75 |
| 8 | 61 | 47.2 |
Thử thách
DễSách có nhiều trang và mỗi trang có rất nhiều từ.
Trong thử thách này, chúng ta sẽ tính nhiều chỉ số khác nhau về những cuốn sách này.
Với từng cuốn sách, hãy lấy tổng số từ, số từ lớn nhất, số từ nhỏ nhất và số từ trung bình tính đến từng trang, rồi lần lượt đặt tên cho các cột này là: total_words, max_words, min_words, avg_words. Ngoài ra, hãy xếp hạng các trang theo thứ hạng dày đặc (trong từng cuốn sách) bằng cách tính tỷ lệ: (avg_words-min_words)/(total_words-min_words) theo thứ tự tăng dần trong từng cuốn sách, rồi đặt tên cột này là ratio_rank. Cuối cùng, sắp xếp kết quả theo book và ratio_rank theo thứ tự tăng dần.
Tự làm thử
Tất cả bài học trong SQL nâng cao
Tự luyện tập: Trình biên dịch Python online