INSERT INTO Khoa VALUES ('Khoa Nội', 'Phong A'); INSERT INTO Khoa VALUES ('Khoa Ngoại', 'Phong B'); INSERT INTO Khoa VALUES ('Khoa Nhi', 'Phong C');
-- Dữ liệu bảng BacSi
INSERT INTO BacSi VALUES (1, 'Dr. Nguyen Van A', 'Phong A'); INSERT INTO BacSi VALUES (2, 'Dr. Tran Thi B', 'Phong B'); INSERT INTO BacSi VALUES (3, 'Dr. Le Van C', 'Phong C'); INSERT INTO BacSi VALUES (4, 'Dr. Pham Thi D', 'Phong A'); INSERT INTO BacSi VALUES (5, 'Dr. Vo Van E', 'Phong B');
-- Dữ liệu bảng BenhNhan
INSERT INTO BenhNhan VALUES (1, 'Nguyen Van X', 'Ha Noi', '1980-01-01', 'Nam'); INSERT INTO BenhNhan VALUES (2, 'Tran Thi Y', 'Ho Chi Minh', '1990-02-02', 'Nu'); INSERT INTO BenhNhan VALUES (3, 'Le Van Z', 'Da Nang', '2000-03-03', 'Nam'); INSERT INTO BenhNhan VALUES (4, 'Pham Thi M', 'Hue', '1970-04-04', 'Nu'); INSERT INTO BenhNhan VALUES (5, 'Vo Van N', 'Can Tho', '1985-05-05', 'Nam');
-- Dữ liệu bảng ChiTietKham
INSERT INTO ChiTietKham VALUES (1, 1, '2011-12-31', 'Ket luan A', 500000); INSERT INTO ChiTietKham VALUES (2, 2, '2012-01-01', 'Ket luan B', 600000); INSERT INTO ChiTietKham VALUES (3, 3, '2012-12-31', 'Ket luan C', 700000); INSERT INTO ChiTietKham VALUES (4, 4, '2013-01-01', 'Ket luan D', 800000); INSERT INTO ChiTietKham VALUES (5, 5, '2013-01-02', 'Ket luan E', 900000); INSERT INTO ChiTietKham VALUES (1, 2, '2014-01-01', 'Ket luan F', 1000000); INSERT INTO ChiTietKham VALUES (2, 3, '2015-01-01', 'Ket luan G', 1100000); INSERT INTO ChiTietKham VALUES (3, 4, '2016-01-01', 'Ket luan H', 1200000); cau 2 SELECT MaBacSi, SUM(TienVienPhi) AS TongTienVienPhi, MIN(TienVienPhi) AS TienVienPhiThapNhat, MAX(TienVienPhi) AS TienVienPhiCaoNhat, AVG(TienVienPhi) AS TienVienPhiTrungBinh FROM ChiTietKham GROUP BY MaBacSi; cau3 UPDATE ChiTietKham SET TienVienPhi = CASE WHEN NgayKham < '2012-01-01' THEN TienVienPhi * 1.10 WHEN NgayKham >= '2012-01-01' AND NgayKham <= '2013-01-01' THEN TienVienPhi * 1.20 ELSE TienVienPhi * 1.30 END; CAU4 CREATE TRIGGER CheckTienVienPhi BEFORE INSERT ON ChiTietKham FOR EACH ROW BEGIN IF NEW.TienVienPhi <= 100000 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Tien vien phi phai lon hon 100000'; END IF; END; CAU5 CREATE FUNCTION TongTienVienPhiKhoa(TenKhoa VARCHAR(50), Nam INT) RETURNS DECIMAL(10, 2) BEGIN DECLARE TongTien DECIMAL(10, 2); SELECT SUM(TienVienPhi) INTO TongTien FROM ChiTietKham ck JOIN BacSi bs ON ck.MaBacSi = bs.MaBacSi JOIN Khoa k ON bs.TenPhong = k.TenPhong WHERE k.TenKhoa = TenKhoa AND YEAR(ck.NgayKham) = Nam; RETURN TongTien; END;
-- Sử dụng hàm SELECT TongTienVienPhiKhoa('Khoa Nội', 2012) AS TongTienVienPhi;