BaşlayınÜcretsiz başlayın

Vardiyaya göre alınış konumları

İş vakasının ikinci hedefini çözme zamanı. NYC ilçeleri içinde her alınış konumu ve vardiya için AvgFarePerKM, RideCount ve TotalRideMin nedir?

Bu egzersiz, kursun bir parçasıdır

SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Kursa Göz Atın

Egzersiz talimatları

  • @Borough nvarchar(30) giriş parametresini kabul eden ve kayıtları eşleşen Borough değeriyle sınırlayan cuspPickupZoneShiftStats adlı bir saklı yordam oluştur.
  • PickupDate'in hour değerini dbo.GetShiftNumber() işlevine geçirerek 'Shift'i hesapla. PickupDatein yalnızca hour kısmını seçmek için DATEPART işlevini kullan.
  • PickupDate haftanın günü, vardiya ve Zone'a göre grupla.
  • PickupDate haftanın gününe (Pazartesi ilk olacak şekilde), vardiyaya ve TotalRideMine göre sırala.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

-- 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;
Kodu Düzenle ve Çalıştır