开始使用免费开始使用

结合 Hot Deck 的工作日逻辑

为每个星期几计算「总费用 / 总距离」。如果 TripDistance 为 0,请使用您在本章前面创建的 Hot Deck 插补函数。

本练习是课程的一部分

SQL Server 中的函数与存储过程编写

查看课程

练习说明

  • 使用 DATENAME()PickupDate 获取星期几。
  • 使用 AVG()TripDistance 计算 TotalAmount,并用 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;
编辑并运行代码