शिफ्ट के अनुसार पिकअप लोकेशन
अब बिज़नेस केस के दूसरे उद्देश्य को हल करने का समय है। NYC Borough के भीतर प्रत्येक पिकअप लोकेशन और शिफ्ट के लिए AvgFarePerKM, RideCount और TotalRideMin क्या हैं?
यह अभ्यास पाठ्यक्रम का हिस्सा है
SQL Server में फंक्शंस और स्टोरड प्रोसीजर्स लिखना
अभ्यास निर्देश
cuspPickupZoneShiftStatsनाम की एक stored procedure बनाएँ, जो@Borough nvarchar(30)को इनपुट पैरामीटर के रूप में स्वीकार करे और रिकॉर्ड्स को मिलते हुएBoroughमान तक सीमित करे.PickupDateकेhourकोdbo.GetShiftNumber()फंक्शन में पास करके'Shift'कैलकुलेट करें।PickupDateके केवलhourहिस्से को चुनने के लिएDATEPARTफंक्शन का उपयोग करें.PickupDateके weekday, shift, और Zone के आधार पर group करें.PickupDateके weekday (Monday सबसे पहले), shift, औरTotalRideMinके आधार पर sort करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
-- Create the stored procedure
CREATE PROCEDURE dbo.cuspPickupZoneShiftStats
-- Specify @Borough parameter
@Borough nvarchar(30)
AS
BEGIN
SELECT
DATENAME(WEEKDAY, PickupDate) as 'Weekday',
-- Calculate the shift number
___.___(___(___, ___)) as 'Shift',
Zone.Zone as 'Zone',
FORMAT(AVG(dbo.ConvertDollar(TotalAmount, .77)/dbo.ConvertMiletoKM(TripDistance)), 'c', 'de-de') AS 'AvgFarePerKM',
FORMAT(COUNT (ID),'n', 'de-de') as 'RideCount',
FORMAT(SUM(DATEDIFF(SECOND, PickupDate, DropOffDate))/60, 'n', 'de-de') as 'TotalRideMin'
FROM YellowTripData
INNER JOIN TaxiZoneLookup as Zone on PULocationID = Zone.LocationID
WHERE
dbo.ConvertMiletoKM(TripDistance) > 0 AND
Zone.Borough = @Borough
GROUP BY
DATENAME(WEEKDAY, PickupDate),
-- Group by shift
___.___(___(___, ___)),
Zone.Zone
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,
-- Order by shift
___.___(___(___, ___)),
SUM(DATEDIFF(SECOND, PickupDate, DropOffDate))/60 DESC
END;