Bắt đầu ngayBắt đầu miễn phí

So sánh theo từng tháng

Để so sánh giữa các tháng, bạn cần dùng một trong các window function sau:

  • LAG(value, offset), trả về một giá trị tại số dòng offset trước dòng hiện tại trong báo cáo.
  • LEAD(value, offset), trả về một giá trị tại số dòng offset sau dòng hiện tại trong báo cáo.

Mục tiêu của bạn là xây dựng một báo cáo hiển thị lượt xem theo từng tháng cho mỗi quốc gia. Một vài mẹo:

  • Bạn sẽ cần gom nhóm ngày theo tháng. Để làm điều này, bạn có thể dùng hàm DATE_PART().
  • Bạn có thể tính tỷ lệ thay đổi bằng công thức: (value)/(previous_value) - 1.
  • Nếu không truyền giá trị offset vào các hàm LAG() hoặc LEAD(), mặc định sẽ là 1.

Vì bảng dữ liệu dừng giữa tháng 6, truy vấn được thiết lập chỉ bao gồm dữ liệu đến hết tháng 5.

Bài tập này là một phần của khóa học

Lập báo cáo trong SQL

Xem khóa học

Hướng dẫn bài tập

  • Từ web_data, truy xuất country_id và dùng hàm DATE_PART() để tạo month.
  • Tạo month_views để lấy tổng lượt xem trong tháng.
  • Tạo previous_month_views để lấy tổng lượt xem của tháng trước cho quốc gia tương ứng.
  • Tạo trường perc_change để tính tỷ lệ thay đổi của tháng này so với tháng trước cho quốc gia đó, trong đó giá trị âm thể hiện lượt xem giảm và giá trị dương thể hiện tăng trưởng.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

SELECT
	-- Pull month and country_id
	____ AS month,
	____,
    -- Pull in current month views
    ____ AS month_views,
    -- Pull in last month views
    ____ AS previous_month_views,
    -- Calculate the percent change
    ____ AS perc_change
FROM ____
WHERE date <= '2018-05-31'
GROUP BY ____;
Chỉnh sửa và Chạy Mã