Mulai sekarangMulai gratis

Lokasi penjemputan per shift

Saatnya menyelesaikan tujuan kedua dari studi kasus bisnis. Berapa AvgFarePerKM, RideCount, dan TotalRideMin untuk setiap lokasi penjemputan dan shift di dalam wilayah NYC (Borough)?

Latihan ini merupakan bagian dari kursus

Menulis Function dan Stored Procedure di SQL Server

Lihat Kursus

Instruksi latihan

  • Buat stored procedure bernama cuspPickupZoneShiftStats yang menerima @Borough nvarchar(30) sebagai parameter masukan dan membatasi rekaman berdasarkan nilai Borough yang cocok.
  • Hitung 'Shift' dengan meneruskan hour dari PickupDate ke fungsi dbo.GetShiftNumber(). Gunakan fungsi DATEPART untuk memilih hanya bagian hour dari PickupDate.
  • Kelompokkan berdasarkan hari dalam minggu PickupDate, shift, dan Zone.
  • Urutkan berdasarkan hari dalam minggu PickupDate (dengan Monday terlebih dahulu), shift, dan TotalRideMin.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

-- 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;
Edit dan Jalankan Kode