Aan de slagBegin gratis

Ophaallocaties per shift

Tijd om het tweede doel van de businesscase op te lossen. Wat zijn de AvgFarePerKM, RideCount en TotalRideMin voor elke ophaallocatie en shift binnen een NYC-borough?

Deze oefening maakt deel uit van de cursus

Functies en opgeslagen procedures schrijven in SQL Server

Bekijk cursus

Oefeninstructies

  • Maak een stored procedure met de naam cuspPickupZoneShiftStats die @Borough nvarchar(30) als invoerparameter accepteert en records beperkt tot de overeenkomende Borough-waarde.
  • Bepaal de 'Shift' door het hour-gedeelte van de PickupDate door te geven aan de functie dbo.GetShiftNumber(). Gebruik de functie DATEPART om alleen het hour-gedeelte van de PickupDate te selecteren.
  • Groepeer op de weekdag van PickupDate, shift en Zone.
  • Sorteer op de weekdag van PickupDate (met maandag eerst), shift en TotalRideMin.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

-- 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;
Code bewerken en uitvoeren