--her çalışananın adını soyadını ve aldığı toplam sipariş saısını listeleyin
select e.FirstName +' '+ e.LastName as Calisan,
COUNT(OrderID) as SiparisSayisi
from Employees e
join Orders o on o.EmployeeID=e.EmployeeID
group by e.FirstName +' '+ e.LastName
--başka yol
select FirstName, LastName,
(
select COUNT(orderID) from Orders
where EmployeeID=e.EmployeeID
)
from Employees e
------------------FONKSİYONLAR-------------------------
--1) SCALAR FUNCTION(TEK DEĞER DÖNDÜREN FONKSİYONLAR)
create function udf_SiparisSayisi
(
@EmpID int
)
returns int
as
begin
declare @toplam int
select @toplam=count(orderID) from orders
where employeeID=@empID
return(@toplam)
end
--sistem fonksiyonu olmadığı için bizim fonksiyonu yazarken şemasını(dbo) yazmak zorundayız.
select FirstName,LastName,dbo.udf_SiparisSayisi(EmployeeID) from Employees
--Her müşterinin siparişlerinde kazanılan miktarı(par bazlı) ve şirket adını listeleyin.
--miktar için bir udf yazınız.
create function udf_ToplamKazanc
(
@CustomerID char(5)
)
returns money
as
begin
declare @Toplam money
select @Toplam=sum(UnitPrice*Quantity*(1-Discount))
from [Order Details] where OrderID in
(
select OrderID from Orders where CustomerID=@CustomerID
)
return(@toplam)
end
select CompanyName, dbo.udf_ToplamKazanc(CustomerID) from Customers
--içine uzun kenar ve kısa kenarı parametle olarak alan ve geriye alan donduren udf
create function udf_Dikdortgen
(
@u int,
@k int
)
returns int
as
begin
return(@u*@k)
end
select dbo.udf_Dikdortgen(2,5)
--geriye merhaba mesajını döndüren fonksiyon
create function udf_Merhaba
(
)
returns nchar(20)
as
begin
return ('Merhaba')
end
select dbo.udf_Merhaba()