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

ค้นหาวันที่ที่หายไป

ฟังก์ชัน generate_series() มีประโยชน์มากในการระบุวันที่ที่หายไปจากข้อมูล

ทบทวนไวยากรณ์:

generate_series(from, to, interval)

โดยที่ from และ to คือ date หรือ timestamp และ interval ระบุเป็น string ที่มีตัวเลขและหน่วยเวลา เช่น '1 month'

มีวันไหนในข้อมูล Evanston 311 ที่ไม่มีการสร้างคำร้องเลยหรือไม่?

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

Exploratory Data Analysis ใน SQL

ดูคอร์ส

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

  1. เขียน subquery โดยใช้ generate_series() เพื่อดึงวันที่ทั้งหมดระหว่างค่า min() และ max() ของ date_created ในตาราง evanston311
  2. เขียน subquery อีกอันเพื่อเลือกค่าทั้งหมดของ date_created ในรูปแบบ date จากตาราง evanston311
  3. ทั้งสอง subquery ควรให้ผลลัพธ์เป็นชนิด date (สังเกตการใช้ ::)
  4. เลือกวันที่ (day) จาก subquery แรกที่ NOT IN ผลลัพธ์ของ subquery ที่สอง เพื่อหาวันที่ที่ไม่ปรากฏใน date_created

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

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

SELECT day
-- 1) Subquery to generate all dates
-- from min to max date_created
  FROM (SELECT generate_series(___(___),
                               ___(___),
                               ___)::___ AS day
          -- What table is date_created in?
          FROM ___) AS all_dates
-- 4) Select dates (day from above) that are NOT IN the subquery
 WHERE day ___ 
       -- 2) Subquery to select all date_created values as dates
       (SELECT ___::___
          FROM evanston311);
แก้ไขและรันโค้ด