วันในสัปดาห์แบบ Logical ด้วย Hot Deck
คำนวณยอดค่าโดยสารรวมต่อระยะทางรวมในแต่ละวันของสัปดาห์ หาก TripDistance มีค่าเป็นศูนย์ ให้ใช้ฟังก์ชัน Hot Deck imputation ที่สร้างไว้ก่อนหน้านี้ในบท
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียนฟังก์ชันและ Stored Procedures ใน SQL Server
คำแนะนำการฝึกหัด
- ใช้
DATENAME()และPickupDateเพื่อเลือกวันในสัปดาห์ - ใช้
AVG()เพื่อคำนวณTotalAmountต่อTripDistanceและใช้คำสั่งCASEเพื่อเลือกTripDistanceหากมีค่ามากกว่า0หากไม่ใช่ ให้ใช้dbo.GetTripDistanceHotDeck() - เรียงลำดับตามวันในสัปดาห์ของ
PickupDateโดยให้'Monday'ปรากฏเป็นอันดับแรก
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
-- Select the pickup day of week
DATENAME(weekday, PickupDate) as DayofWeek,
-- Calculate TotalAmount per TripDistance
CAST(AVG(TotalAmount/
-- Select TripDistance if it's more than 0
CASE WHEN TripDistance > 0 THEN TripDistance
-- Use GetTripDistanceHotDeck()
ELSE dbo.GetTripDistanceHotDeck() END) as decimal(10,2)) as 'AvgFare'
FROM YellowTripData
GROUP BY DATENAME(weekday, PickupDate)
-- Order by the PickupDate day of week
ORDER BY
___ ___ ___(weekday, PickupDate) = '___' THEN 1
___ ___(weekday, PickupDate) = '___' THEN 2
___ ___(weekday, PickupDate) = '___' THEN 3
___ ___(weekday, PickupDate) = '___' THEN 4
___ ___(weekday, PickupDate) = '___' THEN 5
___ ___(weekday, PickupDate) = '___' THEN 6
___ ___(weekday, PickupDate) = '___' THEN 7
END ASC;