Menu
CoddyTech

Hàm tổng hợp

Thuộc phần Kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 68 trên 72.

Với OVER (ORDER BY ...), các hàm tổng hợp như AVG() hoặc MAX() được tính trên các hàng từ đầu đến hàng hiện tại, bao gồm cả những hàng có cùng giá trị ORDER BY. Nếu không có ORDER BY bên trong OVER, các hàm này được tính trên tất cả các hàng, nên mọi hàng đều có cùng một giá trị.
Ví dụ, ta có thể tính doanh thu tối đa đạt được tính đến mỗi kỳ kết thúc:

monthrevenueregion
440East
520East
660West
755West
861East
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1

Kết quả trả về sẽ là:

thángdoanh thumax_revenue
44040
52040
66060
75560
86161

Trong tháng 4 và tháng 5, doanh thu tối đa là 40; trong tháng 6 và tháng 7, doanh thu tối đa là 60; còn trong tháng 8, doanh thu tối đa là 61. Đó là vì khi tìm thấy doanh thu mới lớn hơn, nó bỏ doanh thu cũ và dùng doanh thu lớn nhất tính đến lúc đó.

Đối với hàm AVG(), sẽ có dạng như sau:

SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1
thángdoanh thuavg_revenue
44040
52030
66040
75543.75
86147.2

Chúng ta cũng có thể nhóm các phép tính theo từng danh mục cụ thể bằng PARTITION BY. Ví dụ:

SELECT month, revenue, region,
MAX(revenue) OVER (PARTITION BY region ORDER BY month ASC) as max_revenue
FROM table1

Sẽ cho chúng ta:

monthrevenueregionmax_revenue
440East40
520East40
660West60
755West60
861East61

Giờ đây, giá trị lớn nhất được tính riêng cho từng khu vực. Khu vực East và West duy trì giá trị lớn nhất hiện tại của riêng mình, độc lập với nhau.

challenge icon

Thử thách

Dễ

Các bảng và cột hiện có:

  • books: book, page, words

Với mỗi cuốn sách, hãy hiển thị tên sách, tổng số trang, số từ trên mỗi trang và tính:

  1. Số từ tối đa trên bất kỳ trang nào của cuốn sách đó
  2. Số từ trung bình trên mỗi trang của cả cuốn sách
  3. Chênh lệch giữa số từ trên trang hiện tại và số từ trung bình trên mỗi trang của cuốn sách

Hiển thị kết quả theo thứ tự sách và số trang.

Trả về các cột sau:

  • book
  • page
  • words
  • max_words_in_book
  • avg_words_per_page
  • diff_from_avg

Tự làm thử

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức cơ bản

Tự luyện tập: Playground SQL