Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Użyj DATENAME() i PickupDate, aby wybrać dzień tygodnia.
  • Użyj AVG(), aby obliczyć TotalAmount w przeliczeniu na TripDistance, oraz instrukcji CASE, która wybiera TripDistance, jeśli jest większe od 0. W przeciwnym razie użyj dbo.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;
Edytuj i uruchom kod