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

ค่าเฉลี่ยรายเดือนเมื่อมีวันที่ขาดหาย

หาจำนวนคำร้อง Evanston 311 ที่สร้างขึ้นต่อวันโดยเฉลี่ยในแต่ละเดือนของข้อมูล

คราวนี้ อย่าละเว้นวันที่ไม่มีคำร้อง

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

Exploratory Data Analysis ใน SQL

ดูคอร์ส

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

  • สร้างชุดวันที่ตั้งแต่ 2016-01-01 ถึง 2018-06-30
  • Join ชุดวันที่ดังกล่าวกับ subquery เพื่อนับจำนวนคำร้องที่สร้างขึ้นในแต่ละวัน
  • ใช้ date_trunc() เพื่อดึงข้อมูลเดือนจาก date ซึ่งมีวันที่ครบทุกวัน ไม่ใช่จาก day
  • ใช้ coalesce() เพื่อแทนที่ค่า NULL ใน count ด้วย 0 แล้วคำนวณค่าเฉลี่ยของค่านี้

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

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

-- generate series with all days from 2016-01-01 to 2018-06-30
WITH all_days AS 
     (SELECT generate_series(___,
                             ___,
                             ___::___) AS date),
     -- Subquery to compute daily counts
     daily_count AS 
     (SELECT date_trunc('day', date_created) AS day,
             count(*) AS count
        FROM evanston311
       GROUP BY day)
-- Aggregate daily counts by month using date_trunc
SELECT ___ AS month,
       -- Use coalesce to replace NULL count values with 0
       avg(coalesce(___, ___)) AS average
  FROM all_days
       LEFT JOIN daily_count
       -- Joining condition
       ON all_days.___=daily_count.___
 GROUP BY month
 ORDER BY month; 
แก้ไขและรันโค้ด