Тексты sql-запросов к базе данных:
Запрос 1:
Проверить наличие товара на складе
Select w.ProductName as InStock, w.Quantity
from dbo.Warehouse as w
where w.Quantity > 0
Реализация функции, вычисляющей есть ли товар на складе, по его названию
Create function dbo.isInStock
(@name varchar (50))
returns varchar(50)
as
begin
declare @qu int, @ret varchar(50)
select @qu = w.Quantity
from dbo.Warehouse as w
where w.ProductName = @name
if @qu > 0
set @ret = (@name + ' ' + ' is in stock')
else
set @ret = (@name + ' ' + ' is not in stock')
return(@ret)
end
select dbo.isInStock('TF2 Game')
Запрос 2:
Рассчитать общую сумму заказа.
select p.PurchasementID, p.PurchasementDate,
p.FinalCost
from dbo.Purchasement as p
Вызов соответствующей функции, описание которой приводится в разделе "функции для вычисляемых столбцов"
select dbo.FinCost(4, 3)
Запрос 3:
Какие товары чаще всего заказывают клиенты
select count(pp.ProductID) as TimesBuyed,
w.ProductName
from dbo.Warehouse as w
Left join dbo.PurchProd as pp on pp.ProductID = w.ProductID
group by w.ProductName
order by TimesBuyed desc
Запрос 4:
Доход фирмы за определенный период
select
sum(p.FinalCost)
from dbo.Purchasement as p
where (p.PurchasementDate < '1-12-2011')
and (p.PurchasementDate >= '1-11-2011')
Запрос 5:
Список постоянных клиентов и сумму скидок которые они получили.
select c.Name +' '+ c.Surname as Name, sum(p.BeginningCost-p.FinalCost) as TotalSale
from dbo.customer as c
left join dbo.Purchasement as p on p.CustomerID = c.CustomerID
where c.IsFriend = 1
group by c.Name,c.Surname
Функции для вычисляемых столбцов:
Функция 1:
Подсчет суммарной стоимости промежуточной сделки
Create function dbo.CostOfCouple
(@productId int, @quantity int)
returns int
as
begin
declare @price int
Select @price = w.Price * @quantity
from dbo.warehouse as w
where w.ProductID = @productId
return(@price)
end;
Функция 2:
Вычисляется начальная стоимость сделки (без учета скидок)
Create function dbo.BegCost
(@PurchasementID int)
returns int
as
begin
declare @cost int
Select @cost = sum(PP.TotalCost)
from dbo.PurchProd as PP
where PP.PurchasementID = @PurchasementID
return(@cost)
end;
Функция 3:
Вычисляется конечная стоимость сделки, с учетом всех скидок
Create function dbo.FinCost
(@purchasementID int, @customerID int)
returns int
as
begin
declare @friend bit,
@finCost int,
@begCost int
Select @friend = c.IsFriend
from dbo.customer as c
where c.CustomerID = @customerID
Select @begCost = sum(PP.TotalCost)
from dbo.PurchProd as PP
where PP.PurchasementID = @PurchasementID
if @friend = 0
begin
if @begCost < 1000
set @finCost = @begCost;
else if @begCost <3000
set @finCost = @begCost * 0.97;
else if @begCost <10000
set @finCost = @begCost * 0.90;
else if(@begCost <30000)
set @finCost = @begCost * 0.85;
else
set @finCost = @begCost * 0.83;
end;
else
begin
if(@begCost <1000)
set @finCost = @begCost *0.95;
else if(@begCost <3000)
set @finCost = @begCost * 0.92;
else if(@begCost <10000)
set @finCost = @begCost * 0.85;
else if(@begCost <30000)
set @finCost = @begCost * 0.80;
else
set @finCost = @begCost * 0.78;
end;
return(@finCost)
end;