Nghiên cứu tình huống: stored procedure

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

Meghan Kwartler

IT Consultant

Bài toán kinh doanh taxi

  1. Quỹ PE châu Âu tìm cơ hội đầu tư vào Vận tải Mỹ.
  2. Trung bình tiền cước/km, số chuyến và tổng thời gian chuyến cho từng quận NYC theo từng ngày trong tuần là bao nhiêu?
  3. Nên xếp lịch các điểm đón nào trong quận cho từng ca tài xế?

Ảnh taxi vàng

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

Tiến hóa của SP

--Query detail level with UDFs
SELECT 
  DATENAME (weekday, PickupDate) as 'Weekday', 
  PickupDate, 
  DropOffDate, 
  TotalAmount, 
  TripDistance, 
  dbo.ConvertDollar(TotalAmount,.88)/ dbo.ConvertMileToKm(TripDistance) as 'EuroFarePerKM', 
  DATEDIFF(SECOND, PickupDate, DropOffDate)/ 60 as 'TotalRideMin' 
FROM YellowTripData 
WHERE TripDistance > 0
Viết Hàm và Thủ Tục Lưu Trữ trong SQL Server
SELECT DATENAME(weekday, PickupDate) as 'Weekday', 
     Zone.Borough as 'PickupBorough',
     AVG(dbo.ConvertDollar(TotalAmount, .77)/
     dbo.ConvertMiletoKM(TripDistance)))
     AS 'AvgFarePerKM',
     COUNT (ID) as 'RideCount',
     SUM(DATEDIFF(SECOND, PickupDate, DropOffDate)/60) as 'TotalRideMin'
FROM YellowTripData
INNER JOIN TaxiZoneLookup AS Zone 
ON PULocationID = Zone.LocationID 
WHERE dbo.ConvertMiletoKM(TripDistance) > 0 
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,  
AVG(dbo.ConvertDollar(TotalAmount, .77)/dbo.ConvertMiletoKM(TripDistance)) DESC;
Viết Hàm và Thủ Tục Lưu Trữ trong SQL Server

Bước "cuối"

CREATE OR ALTER PROCEDURE dbo.cuspPickupZoneShiftStats
@Borough nvarchar(30)
AS
BEGIN
.....
END
DROP PROCEDURE IF EXISTS dbo.cuspPickupZoneShiftStats
GO
CREATE PROCEDURE dbo.cuspPickupZoneShiftStats
@Borough nvarchar(30)
AS
BEGIN
....
END
Viết Hàm và Thủ Tục Lưu Trữ trong SQL Server

Đến lượt bạn!

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

Preparing Video For Download...