始める無料で始める

Hot Deck を使った平日の論理化

曜日ごとに、総距離あたりの総運賃額を計算します。TripDistance が 0 の場合は、本章で作成した Hot Deck 補完関数を使用してください。

この演習はコースの一部です

SQL Server における関数とストアドプロシージャの作成

コースを見る

演習の手順

  • DATENAME()PickupDate を使って曜日を取得します。
  • AVG() を使って TripDistance あたりの TotalAmount を計算し、CASE ステートメントで TripDistance0 より大きい場合はその値を、そうでなければ 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;
コードを編集して実行