XÂY DỰNG CÁC THAO TÁC NGHIỆP VỤ

Một phần của tài liệu Bài tập lớn quản lí nhà hàng trong hệ cơ sở dữ liệu (Trang 37 - 43)

F. CHUẨN HOÁ DỮ LIỆU SANG CHUẨN 3N

IV) XÂY DỰNG CÁC THAO TÁC NGHIỆP VỤ

1. TỔNG DOANH THU THEO THÁNG Code:

 CREATE PROCEDURE TongDoanhThuTheoThang AS

BEGIN

SELECT YEAR(NgayLap) AS Nam, MONTH(NgayLap) AS Thang, SUM(TongTien) AS DoanhThu FROM HoaDon

GROUP BY YEAR(NgayLap), MONTH(NgayLap) ORDER BY Nam, Thang;

END;

go

EXEC TongDoanhThuTheoThang;

Stored procedure TongDoanhThuTheoThang trong SQL Server được thiết kế để truy vấn dữ liệu từ bảng HoaDon và trả về một bảng báo cáo tổng doanh thu theo tháng và năm. Cách thức hoạt động của stored procedure này bao gồm các bước sau:

- Đầu tiên, stored procedure sử dụng câu lệnh SELECT để truy vấn dữ liệu từ bảng HoaDon. Sau đó, stored procedure sử dụng hàm YEAR và MONTH để lấy thông tin về năm và tháng từ cột NgayLap.

- Tiếp theo, stored procedure tính tổng doanh thu của mỗi tháng bằng cách sử dụng hàm SUM trên cột TongTien.

- Sau đó, stored procedure nhóm kết quả theo năm và tháng bằng cách sử dụng câu lệnh GROUP BY. Kết quả được sắp xếp theo thứ tự tăng dần của năm và tháng bằng cách sử dụng câu lệnh ORDER BY.

Kết quả cuối cùng được trả về là một bảng báo cáo với các cột là năm, tháng và tổng doanh thu của mỗi tháng được liệt kê theo thứ tự tăng dần của năm và tháng. Stored procedure TongDoanhThuTheoThang này có thể giúp cho

người dùng dễ dàng theo dõi và phân tích doanh thu của cửa hàng theo từng tháng và năm.

2. BÁO CÁO SỐ LƯỢNG HÓA ĐƠN VÀ DOANH THU CỦA TỪNG KHÁCH HÀNG

Code:

CREATE PROCEDURE BaoCaoSoLuongHoaDonVaDoanhThuCuaTungKhachHang AS

BEGIN SELECT

K.MaKhachHang AS MaKhachHang,

K.HoTenDem + ' ' + K.Ten AS TenKhachHang, COUNT(H.MaHoaDon) AS SoHoaDon, SUM(H.TongTien) AS TongTien FROM

KhachHang K LEFT JOIN

HoaDon H ON K.MaKhachHang = H.MaKhachHang GROUP BY

K.MaKhachHang, K.HoTenDem, K.Ten ORDER BY

TongTien DESC;

END;

go

EXEC BaoCaoSoLuongHoaDonVaDoanhThuCuaTungKhachHang;

Stored procedure BaoCaoSoLuongHoaDonVaDoanhThuCuaTungKhachHang trong SQL Server được thiết kế để truy vấn dữ liệu từ bảng KhachHang và HoaDon, và trả về một bảng báo cáo với thông tin về số lượng hóa đơn và tổng doanh thu của từng khách hàng. Cách thức hoạt động của stored procedure này bao gồm các bước sau:

- Đầu tiên, stored procedure sử dụng câu lệnh SELECT để truy vấn dữ liệu từ bảng KhachHang. Sau đó, sử dụng câu lệnh LEFT JOIN để kết hợp dữ liệu từ bảng HoaDon với bảng KhachHang dựa trên trường MaKhachHang.

- Tiếp theo, sử dụng hàm COUNT để đếm số lượng hóa đơn của mỗi khách hàng và hàm SUM để tính tổng doanh thu của mỗi khách hàng.

- Sau đó, stored procedure nhóm kết quả theo mã khách hàng, họ tên đệm và tên khách hàng bằng cách sử dụng câu lệnh GROUP BY.

Kết quả cuối cùng được sắp xếp theo thứ tự giảm dần của tổng doanh thu của từng khách hàng bằng cách sử dụng câu lệnh ORDER BY. Khi stored procedure được gọi, nó sẽ trả về một bảng báo cáo với các cột là mã khách hàng, tên khách hàng, số lượng hóa đơn và tổng doanh thu của từng khách hàng. Bảng báo cáo này giúp người dùng dễ dàng theo dõi và phân tích doanh thu của từng khách hàng, với khách hàng có tổng doanh thu cao nhất được hiển thị đầu tiên trong bảng.

3. BÁO CÁO SỐ LƯỢNG MÓN ĂN BÁN ĐƯỢC TRONG MỖI HÓA ĐƠN

Code:

CREATE FUNCTION dbo.GetMonAnCountByHoaDon() RETURNS TABLE

AS RETURN (

SELECT H.MaHoaDon,

COUNT(CHD.MaMonAn) AS SoLuongMonAn FROM

HoaDon H

INNER JOIN ChiTietHoaDon CHD ON H.MaHoaDon = CHD.MaHoaDon GROUP BY

H.MaHoaDon );

go

SELECT * FROM dbo.GetMonAnCountByHoaDon();

Đầu tiên, function sử dụng câu lệnh SELECT để truy vấn dữ liệu từ bảng HoaDon. Sau đó, sử dụng câu lệnh INNER JOIN để kết hợp dữ liệu từ bảng ChiTietHoaDon với bảng HoaDon dựa trên trường MaHoaDon.

- Tiếp theo, sử dụng hàm COUNT để đếm số lượng món ăn trong mỗi hóa đơn.

- Sau đó, function nhóm kết quả theo mã hóa đơn bằng cách sử dụng câu lệnh GROUP BY.

Khi function được gọi, nó sẽ trả về một bảng kết quả với các cột là mã hóa đơn và số lượng món ăn trong mỗi hóa đơn. Bảng kết quả này chứa thông tin về số lượng món ăn trong từng hóa đơn, giúp người dùng dễ dàng theo dõi và phân tích số lượng món ăn được bán ra trong mỗi hóa đơn.

4. BÁO CÁO SỐ LƯỢNG HÓA ĐƠN THEO NHÂN VIÊN Code:

CREATE FUNCTION dbo.GetHoaDonCountByNhanVien() RETURNS TABLE

AS RETURN (

SELECT

NV.HoTenDem + ' ' + NV.Ten AS NhanVien, COUNT(H.MaHoaDon) AS SoLuongHoaDon FROM

NhanVien NV

LEFT JOIN HoaDon H ON NV.MaNhanVien = H.MaNhanVien GROUP BY

NV.HoTenDem, NV.Ten );

go

SELECT * FROM dbo.GetHoaDonCountByNhanVien();

Đầu tiên, function sử dụng câu lệnh SELECT để truy vấn dữ liệu từ bảng NhanVien. Sau đó, sử dụng câu lệnh LEFT JOIN để kết hợp dữ liệu từ bảng HoaDon với bảng NhanVien dựa trên trường MaNhanVien.

- Tiếp theo, sử dụng hàm COUNT để đếm số lượng hóa đơn của mỗi nhân viên.

- Sau đó, function nhóm kết quả theo tên đệm và tên của nhân viên bằng cách sử dụng câu lệnh GROUP BY.

Khi function được gọi, nó sẽ trả về một bảng kết quả với các cột là tên đệm và tên của nhân viên, cùng với số lượng hóa đơn của từng nhân viên. Bảng kết quả này chứa thông tin về số lượng hóa đơn của từng nhân viên, giúp người dùng dễ dàng theo dõi và phân tích hiệu suất công việc của từng nhân viên trong việc xử lý các hóa đơn.

5. BẢNG BÁO CÁO CHI TIẾT HÓA ĐƠN CODE:

CREATE TRIGGER UpdateTotalPrice ON dbo.ChiTietHoaDon

AFTER INSERT, UPDATE AS

BEGIN

UPDATE HoaDon

SET TongTien = (SELECT SUM(ThanhTien) FROM dbo.ChiTietHoaDon WHERE MaHoaDon = inserted.MaHoaDon)

FROM HoaDon

INNER JOIN inserted ON HoaDon.MaHoaDon = inserted.MaHoaDon;

END;

INSERT INTO ChiTietHoaDon (MaHoaDon, MaMonAn, SoLuong, ThanhTien, DonGia) VALUES (301, 903, 2, 150000, 40000)

Select * from dbo.ChiTietHoaDon

WITH MonAnBanChay AS ( SELECT

M.MaMonAn, M.TenMonAn,

SUM(CHD.SoLuong) AS TongSoLuong FROM

Menu AS M JOIN

ChiTietHoaDon AS CHD ON M.MaMonAn = CHD.MaMonAn JOINN

HoaDon AS HD ON CHD.MaHoaDon = HD.MaHoaDon WHERE

MONTH(HD.NgayLap) = MONTH(GETDATE()) AND YEAR(HD.NgayLap) = YEAR(GETDATE())

GROUP BY

M.MaMonAn, M.TenMonAn )

SELECT *

FROM

MonAnBanChay WHERE

Một phần của tài liệu Bài tập lớn quản lí nhà hàng trong hệ cơ sở dữ liệu (Trang 37 - 43)

Tải bản đầy đủ (PDF)

(43 trang)