Vaka çalışması UDF'leri

SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Meghan Kwartler

IT Consultant

Taksi yolculuğu iş problemi

  1. AB özel sermaye şirketi, ABD Ulaşım sektöründe yatırım fırsatı arıyor.
  2. Haftanın her günü, her NYC ilçesi için mesafe başına ortalama ücret, yolculuk sayısı ve toplam yolculuk süresi nedir?

sarı_taksi_fotosu.jpg

SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Taksi yolculuğu iş problemi

  1. AB özel sermaye şirketi, ABD Ulaşım sektöründe yatırım fırsatı arıyor.
  2. Haftanın her günü, her NYC ilçesi için mesafe başına ortalama ücret, yolculuk sayısı ve toplam yolculuk süresi nedir?
  3. İlçedeki hangi alış noktaları her sürücü vardiyası için planlanmalı?

sarı_taksi_fotosu.jpg

SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Dönüşüm UDF'leri

CREATE FUNCTION dbo.ConvertMileToMeter (@miles numeric)
RETURNS numeric
AS
BEGIN
RETURN (SELECT @miles * 1609.34)
END
CREATE FUNCTION dbo.ConvertCurrency (@Currency numeric, @ExchangeRate numeric)
RETURNS numeric
AS
BEGIN
RETURN (SELECT @ExchangeRate * @Currency)
END
SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma
SELECT TripDistance as 'MileDistance', 
dbo.ConvertMileToMeter (TripDistance) as 'MeterDistance', 
FareAmount as 'FareUSD', 
dbo.ConvertCurrency (FareAmount, '.78') as 'FareGBP' 
FROM dbo.YellowTripData
+--------------+---------------+---------+---------+
| MileDistance | MeterDistance | FareUSD | FareGBP |
|--------------+---------------+---------+---------+
|  1.10        | 1609          |  6      | 6       |
|  0.02        | 0             | 52      | 52      |
|  0.50        | 1609          |  4      | 4       |
|  7.75        | 12875         | 22      | 22      |
|  0.80        | 1609          |  6      | 6       |
|  0.90        | 1609          |  7      | 7       |
|  1.76        | 3219          |  7      | 7       |
|  8.47        | 12875         | 24      | 24      |
|  2.40        | 3219          | 10.50   | 11      |
| 12.60        | 20921         | 60      | 60      |
|  0.90        | 1609          |  7      | 7       |
+--------------+---------------+---------+---------+
SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Yinele

ALTER FUNCTION dbo.ConvertMileToMeter (
  @miles numeric (18, 2)
) RETURNS numeric (18, 2) as BEGIN RETURN (
  SELECT @miles * 1609.34
) END;
ALTER FUNCTION dbo.ConvertCurrency (
  @Currency numeric (18, 2), 
  @ExchangeRate numeric(18, 2)
) RETURNS numeric (18, 2) AS BEGIN RETURN (
  SELECT @ExchangeRate * @Currency
) END;
SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Vardiyalar ne olacak?

CREATE FUNCTION dbo.GetShift (@Hour int)
RETURNS int
AS
BEGIN
RETURN (CASE 
    WHEN @Hour >= 0 AND @Hour < 9 THEN 1
    WHEN @Hour >= 9 AND @Hour < 18 THEN 2
    WHEN @Hour >= 18 AND @Hour < 24 THEN 3
END)
END;
SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Vardiyaları test et

SELECT 
  DATENAME(hour, PickupDate) AS 'Hour', 
  dbo.GetShift (
    DATENAME(hour, PickupDate)
  ) AS 'Shift' 
FROM YellowTripData 
GROUP BY DATENAME(hour, PickupDate) 
ORDER BY 
  dbo.GetShift (
    DATENAME(hour, PickupDate)
  )
+------+-------+
| Hour | Shift |
|------+-------|
|  3   | 1     |
|  6   | 1     |
|  4   | 1     |
|  2   | 1     |
|  0   | 1     |
|  8   | 1     |
|  5   | 1     |
|  1   | 1     |
|  7   | 1     |
|  9   | 2     |
| 11   | 2     |
| 15   | 2     |
| 14   | 2     |
| ...  | ...   |
+------+-------|
SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Sıra sende!

SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Preparing Video For Download...