시작하기무료로 시작하기

근무조별 픽업 위치

이제 비즈니스 과제의 두 번째 목표를 해결해 볼까요? 뉴욕시 각 Borough 내에서 픽업 위치와 근무조별 AvgFarePerKM, RideCount, TotalRideMin은 무엇인가요?

이 연습은 강의의 일부입니다

SQL Server에서 함수와 저장 프로시저 작성하기

강의 보기

연습 안내

  • 입력 매개변수로 @Borough nvarchar(30)을(를) 받아 해당 값과 일치하는 Borough만으로 레코드를 제한하는 저장 프로시저 cuspPickupZoneShiftStats를 생성하세요.
  • PickupDatehourdbo.GetShiftNumber() 함수에 전달해 'Shift'를 계산하세요. PickupDate에서 hour 부분만 선택하려면 DATEPART 함수를 사용하세요.
  • PickupDate의 요일, 근무조(shift), Zone으로 그룹화하세요.
  • 정렬은 PickupDate의 요일(월요일이 먼저), 근무조, TotalRideMin 순으로 하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

-- 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;
코드 편집 및 실행