เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การเปรียบเทียบแบบเดือนต่อเดือน

ในการเปรียบเทียบข้อมูลระหว่างเดือน ให้ใช้ window function ต่อไปนี้:

  • LAG(value, offset) ซึ่งดึงค่าจากแถวที่อยู่ก่อนหน้าแถวปัจจุบันตามจำนวน offset ที่กำหนด
  • LEAD(value, offset) ซึ่งดึงค่าจากแถวที่อยู่ถัดจากแถวปัจจุบันตามจำนวน offset ที่กำหนด

เป้าหมายคือสร้างรายงานที่แสดงจำนวนการดูของแต่ละประเทศแบบเดือนต่อเดือน โดยมีเคล็ดลับดังนี้:

  • ต้องจัดกลุ่มวันที่ตามเดือน ซึ่งทำได้โดยใช้ฟังก์ชัน DATE_PART()
  • คำนวณ เปอร์เซ็นต์การเปลี่ยนแปลง ได้จากสูตร: (value)/(previous_value) - 1
  • หากไม่ระบุค่า offset ใน LAG() หรือ LEAD() ค่าเริ่มต้นจะเป็น 1

เนื่องจากตารางมีข้อมูลถึงกลางเดือนมิถุนายน คิวรีจึงถูกตั้งค่าให้แสดงเฉพาะข้อมูลจนถึงสิ้นเดือนพฤษภาคม

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การรายงานผลด้วย SQL

ดูคอร์ส

คำแนะนำการฝึกหัด

  • จากตาราง web_data ดึงข้อมูล country_id และใช้ฟังก์ชัน DATE_PART() เพื่อสร้างฟิลด์ month
  • สร้าง month_views เพื่อรวมยอดวิวทั้งหมดภายในเดือนนั้น
  • สร้าง previous_month_views เพื่อดึงยอดวิวทั้งหมดของเดือนที่แล้วสำหรับแต่ละประเทศ
  • สร้างฟิลด์ perc_change เพื่อคำนวณ เปอร์เซ็นต์การเปลี่ยนแปลง ของเดือนนี้เทียบกับเดือนที่แล้วในแต่ละประเทศ โดยค่าติดลบหมายถึงยอดวิวที่ลดลง และค่าบวกหมายถึงยอดวิวที่เพิ่มขึ้น

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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 ____;
แก้ไขและรันโค้ด