ÎncepețiÎncepe gratuit

Locații de preluare pe tură

E timpul să rezolvi cel de-al doilea obiectiv al studiului de caz. Care sunt AvgFarePerKM, RideCount și TotalRideMin pentru fiecare locație de preluare și tură în cadrul unui cartier din New York?

Acest exercițiu face parte din cursul

Scrierea funcțiilor și a procedurilor stocate în SQL Server

Vezi cursul

Instrucțiuni pentru exercițiu

  • Creează o procedură stocată numită cuspPickupZoneShiftStats care acceptă @Borough nvarchar(30) ca parametru de intrare și filtrează înregistrările după valoarea corespunzătoare a câmpului Borough.
  • Calculează 'Shift' (tura) pasând ora din PickupDate funcției dbo.GetShiftNumber(). Folosește funcția DATEPART pentru a extrage doar componenta hour din PickupDate.
  • Grupează după ziua săptămânii a coloanei PickupDate, tură și Zone.
  • Sortează după ziua săptămânii din PickupDate (începând cu luni), tură și TotalRideMin.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

-- 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;
Editează și rulează codul