CommencerCommencez gratuitement

Procédure stockée : statistiques par arrondissement de NYC

Il est temps de mettre en pratique ce que vous avez appris dans ce cours et d’écrire une procédure stockée pour résoudre le premier objectif de l’étude de cas Taxi Ride. Calculez AvgFarePerKM, RideCount et TotalRideMin pour chaque arrondissement de NYC et chaque jour de la semaine. Après discussion avec les parties prenantes, vous devez omettre les enregistrements où TripDistance est égal à zéro.

Cet exercice fait partie du cours

<cours>Écrire des fonctions et des procédures stockées dans SQL Server</cours>
Voir le cours

Instructions de l’exercice

  • Sélectionnez et regroupez par jour de la semaine du pickup et par Borough.
  • Calculez AvgFarePerKM avec dbo.ConvertDollar() et dbo.ConvertMiletoKM() en utilisant un taux de change de 0,88 vers l’euro.
  • Affichez AvgFarePerKM en devise allemande, et RideCount et TotalRideMin en nombres allemands.
  • Omettez les enregistrements où TripDistance vaut 0.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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;
Modifier et exécuter le code