Логические дни недели с методом Hot Deck
Вычислите общую сумму тарифа на общее расстояние для каждого дня недели. Если значение TripDistance равно нулю, используйте функцию импутации Hot Deck, созданную ранее в этой главе.
Это упражнение является частью курса
Написание функций и хранимых процедур в 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;