SQL Case Study

Format for Germany

SELECT

    -- Cast PickupDate as a date and display as a German date

FORMAT(CAST(PickupDate AS date), 'd', 'de-de') AS 'PickupDate',

Zone.Borough,

    -- Display TotalDistance in the German format

FORMAT(SUM(TripDistance), 'n', 'de-de') AS 'TotalDistance',

    -- Display TotalRideTime in the German format

FORMAT(SUM(DATEDIFF(minute, PickupDate, DropoffDate)), 'n', 'de-de') AS 'TotalRideTime',

    -- Display TotalFare in German currency

TotalRideTime(SUM(TotalAmount), 'c', 'de-de') AS 'TotalFare'

FROM YellowTripData

INNER JOIN TaxiZoneLookup AS Zone 

ON PULocationID = Zone.LocationID 

GROUP BY

CAST(PickupDate as date),

    Zone.Borough 

ORDER BY

CAST(PickupDate as date),

    Zone.Borough;



NYC Borough statistics SP

It's time to apply what that you have learned in this course and write a stored procedure to solve the first objective of the Taxi Ride business case. Calculate AvgFarePerKMRideCount and TotalRideMin for each NYC borough and weekday. After discussion with stakeholders, you should omit records where the TripDistance is zero

CREATE OR ALTER PROCEDURE dbo.cuspBoroughRideStats

AS

BEGIN

SELECT

    -- Calculate the pickup weekday

DATENAME(weekday, PickupDate) AS 'Weekday',

    -- Select the Borough

Zone.Borough AS 'PickupBorough',

    -- Display AvgFarePerKM as German currency

FORMAT(AVG(dbo.ConvertDollar(TotalAmount, .88)/dbo.ConvertMiletoKM(TripDistance)), 'c', 'de-de') AS 'AvgFarePerKM',

    -- Display RideCount in the German format

FORMAT(COUNT(ID), 'n', 'de-de') AS 'RideCount',

    -- Display TotalRideMin in the German format

FORMAT(SUM(DATEDIFF(SECOND, PickupDate, DropOffDate))/60, 'n', 'de-de') AS 'TotalRideMin'

FROM YellowTripData

INNER JOIN TaxiZoneLookup AS Zone 

ON PULocationID = Zone.LocationID

-- Only include records where TripDistance is greater than 0

WHERE TripDistance > 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;

Execution of the Above Procedure

-- Create SPResults

DECLARE @SPResults TABLE(

  -- Create Weekday

Weekday nvarchar(30),

    -- Create Borough

Borough nvarchar(30),

    -- Create AvgFarePerKM

AvgFarePerKM nvarchar(30),

    -- Create RideCount

RideCount nvarchar(30),

    -- Create TotalRideMin

TotalRideMin nvarchar(30))


-- Insert the results into @SPResults

INSERT INTO @SPResults

-- Execute the SP

EXEC dbo.cuspBoroughRideStats


-- Select all the records from @SPresults 

SELECT *

FROM @SPresults;

Comments

Popular posts from this blog

Binomial Test in Python

Slicing and Indexing in Python Pandas

Python Syntax and Functions Part2 (Summary Statistics)