Logiczne dni tygodnia z metodą Hot Deck
Oblicz całkowitą kwotę opłaty za przejechany dystans dla każdego dnia tygodnia. Jeśli wartość TripDistance wynosi zero, użyj funkcji imputacji Hot Deck utworzonej wcześniej w tym rozdziale.
To ćwiczenie jest częścią kursu
Funkcje i procedury składowane w SQL Server
Instrukcje do ćwiczenia
- Użyj
DATENAME()iPickupDate, aby wybrać dzień tygodnia. - Użyj
AVG(), aby obliczyćTotalAmountw przeliczeniu naTripDistance, oraz instrukcjiCASE, która wybieraTripDistance, jeśli jest większe od0. W przeciwnym razie użyjdbo.GetTripDistanceHotDeck(). - Posortuj wyniki według dnia tygodnia z
PickupDate, tak aby'Monday'pojawiło się jako pierwsze.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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;