You are on page 1of 2

--Câu 5: Tạo các function sau:

--1. Viết hàm tính doanh thu của năm, với năm là tham số truyền vào.
CREATE FUNCTION Tinh_DoanhThu_Nam (@Year INT)
RETURNS MONEY
AS
BEGIN
DECLARE @TongDoanhThu MONEY;

SELECT @TongDoanhThu = SUM(TONGTG)


FROM HOADON
WHERE YEAR(NGAY) = @Year;

RETURN ISNULL(@TongDoanhThu, 0);


END;

select dbo.Tinh_DoanhThu_Nam(2010)
--2. Viết hàm tính doanh thu của tháng, năm, với tháng và năm là 2 tham số truyền
vào.
create function Tinh_DoanhThu_Thang_Nam (@Thang int, @Nam int)
returns money
as
begin
declare @TongDT money;
select @TongDT = sum(TONGTG)
from HOADON
where year(NGAY) = @Nam and month(NGAY) = @Thang
return isnull(@TongDT,0);
end

select dbo.Tinh_DoanhThu_Thang_Nam(05,2010)
--3. Viết hàm tính doanh thu của khách hàng với mã khách hàng là tham số truyền
vào.
create function Tinh_DoanhThu_KhachHang (@MaKH varchar(4))
returns money
as
begin
declare @TongDT_KH money;
select @TongDT_KH = sum(TONGTG)
from KHACHHANG inner join HOADON on KHACHHANG.MAKH = HOADON.MAKH
where HOADON.MAKH = @MaKH
return isnull(@TongDT_KH,0);
end

select dbo.Tinh_DoanhThu_KhachHang('KH01')
--4. Viết hàm tính tổng số lượng bán được cho từng mặt hàng theo tháng, năm nào đó.
Với
--mã hàng, tháng và năm là các tham số truyền vào, nếu tháng không nhập vào tức là
tính
--tất cả các tháng.
create function Tinh_TongSL_BanDuoc (@MaMH varchar(5), @Thang int = null, @Nam int)
returns int
as
begin
declare @TongSL int;
select @TongSL = sum(SL)
from VATTU VT, CTHD CT, HOADON HD
where VT.MAVT = CT.MAVT and HD.MAHD = CT.MAHD and
VT.MAVT = @MaMH and (month(HD.NGAY) = @Thang or @Thang is null)
and year(HD.NGAY) = @Nam
return isnull (@TongSL,0)
end

-- Lấy tổng số lượng bán của mặt hàng 'ABC' trong tháng 5 năm 2023
SELECT dbo.Tinh_TongSL_BanDuoc('ABC', 5, 2023) AS TotalQuantitySoldForMay2023;

-- Lấy tổng số lượng bán của mặt hàng 'XYZ' trong năm 2023
SELECT dbo.Tinh_TongSL_BanDuoc('XYZ', NULL, 2023) AS TotalQuantitySoldFor2023;

--5. Viết hàm tính lãi ((giá bán – giá mua) * số lượng bán được) cho từng mặt hàng,
với mã
--mặt hàng là tham số truyền vào. Nếu mã mặt hàng không truyền vào thì tính cho tất
cả
--các mặt hàng.
create function Tinh_Lai_Tung_MatHang(@MaMH varchar(4) = null)
returns float
as
begin
declare @Lai float;

select @Lai = sum((GiaBan - GiaMua)*SL)


from VATTU inner join CTHD on VATTU.MAVT = CTHD.MAVT
where VATTU.MAVT = @MaMH or @MaMH is null
return isnull(@Lai,0)
end

select dbo.Tinh_Lai_Tung_MatHang('VT01') as 'Lai cua tung San Pham'

You might also like