เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

Stored Procedure สถิติเขตใน NYC

ถึงเวลาแล้วที่จะนำสิ่งที่เรียนมาในคอร์สนี้ไปใช้จริง โดยเขียน stored procedure เพื่อตอบโจทย์แรกของกรณีศึกษาธุรกิจแท็กซี่ คำนวณ AvgFarePerKM, RideCount และ TotalRideMin สำหรับแต่ละเขตใน NYC และแต่ละวันในสัปดาห์ จากการหารือกับผู้มีส่วนเกี่ยวข้อง ให้ละเว้นเรคคอร์ดที่ TripDistance มีค่าเป็นศูนย์

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การเขียนฟังก์ชันและ Stored Procedures ใน SQL Server

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เลือกข้อมูลและจัดกลุ่มตามวันรับผู้โดยสารและ Borough
  • คำนวณ AvgFarePerKM โดยใช้ dbo.ConvertDollar() และ dbo.ConvertMiletoKM() พร้อมอัตราแลกเปลี่ยน .88 เป็นสกุลเงินยูโร
  • แสดง AvgFarePerKM ในรูปแบบสกุลเงินเยอรมัน และแสดง RideCount กับ TotalRideMin ในรูปแบบตัวเลขเยอรมัน
  • ละเว้นเรคคอร์ดที่ TripDistance มีค่าเป็น 0

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

CREATE OR ALTER PROCEDURE dbo.cuspBoroughRideStats
AS
BEGIN
SELECT
    -- Calculate the pickup weekday
	___(weekday, PickupDate) AS 'Weekday',
    -- Select the Borough
	Zone.Borough AS 'PickupBorough',
    -- Display AvgFarePerKM as German currency
	___(AVG(dbo.___(TotalAmount, .88)/dbo.___(TripDistance)), '_', 'de-de') AS '___',
    -- Display RideCount in the German format
	___(COUNT(ID), '_', 'de-de') AS '___',
    -- Display TotalRideMin in the German format
	___(SUM(DATEDIFF(SECOND, PickupDate, DropOffDate))/60, '_', 'de-de') AS '___'
FROM YellowTripData
INNER JOIN TaxiZoneLookup AS Zone 
ON PULocationID = Zone.LocationID
-- Only include records where TripDistance is greater than 0
___ ___ > ___
-- Group by pickup weekday and Borough
GROUP BY DATENAME(WEEKDAY, PickupDate), Zone.Borough
ORDER BY CASE WHEN DATENAME(WEEKDAY, PickupDate) = 'Monday' THEN 1
	     	  WHEN DATENAME(WEEKDAY, PickupDate) = 'Tuesday' THEN 2
              WHEN DATENAME(WEEKDAY, PickupDate) = 'Wednesday' THEN 3
              WHEN DATENAME(WEEKDAY, PickupDate) = 'Thursday' THEN 4
              WHEN DATENAME(WEEKDAY, PickupDate) = 'Friday' THEN 5
              WHEN DATENAME(WEEKDAY, PickupDate) = 'Saturday' THEN 6
              WHEN DATENAME(WEEKDAY, PickupDate) = 'Sunday' THEN 7 END,  
		 SUM(DATEDIFF(SECOND, PickupDate, DropOffDate))/60
DESC
END;
แก้ไขและรันโค้ด