SP de statistiques par arrondissement de NYC
Il est temps d'appliquer 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 exclure les enregistrements où TripDistance est égal à zéro.
Cette activité fait partie du cours
Écrire des fonctions et des procédures stockées dans SQL Server
Instructions de l’exercice
- Sélectionnez et regroupez par jour de prise en charge et par
Borough. - Calculez
AvgFarePerKMavecdbo.ConvertDollar()etdbo.ConvertMiletoKM()en utilisant un taux de change de 0,88 vers l'euro. - Affichez
AvgFarePerKMen devise allemande, etRideCountainsi queTotalRideMinen format numérique allemand. - Excluez les enregistrements où
TripDistancevaut0.
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;