Bắt đầu ngayBắt đầu miễn phí

Stored procedure thống kê quận NYC

Đến lúc áp dụng những gì bạn đã học trong khóa này để viết một stored procedure giải quyết mục tiêu đầu tiên của bài toán Taxi Ride. Tính AvgFarePerKM, RideCountTotalRideMin cho từng quận (borough) của NYC theo từng ngày trong tuần. Sau khi thảo luận với các bên liên quan, bạn cần loại bỏ các bản ghi có TripDistance bằng không.

Bài tập này là một phần của khóa học

Viết Hàm và Thủ Tục Lưu Trữ trong SQL Server

Xem khóa học

Hướng dẫn bài tập

  • SELECT và GROUP BY theo ngày đón khách trong tuần và Borough.
  • Tính AvgFarePerKM bằng dbo.ConvertDollar()dbo.ConvertMiletoKM() với tỷ giá quy đổi sang Euro là .88.
  • Hiển thị AvgFarePerKM dưới dạng tiền tệ tiếng Đức, RideCountTotalRideMin dưới dạng số theo chuẩn tiếng Đức.
  • Loại bỏ các bản ghi có TripDistance0.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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;
Chỉnh sửa và Chạy Mã