SQL Server - Tích hợp kết quả từ nhiều câu truy vấn
• Hàm GROUPINGcó thể sử dụng với CUBEhoặc ROLLUP.
• Sử dụng hàm GROUPINGđể tìm những dòng tổng được
thêm bổ sung do các toán tử CUBEhoặc ROLLUP.
• Hàm GROUPINGtrả về giá tri 0 hoặc 1.
1TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Tích hợp kết quả từ nhiều câu truy vấn 2TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Mệnh đề UNION Mệnh đề UNION sẽ hội kết quả của hai câu truy vấn sau khi đã loại bỏ các dòng trùng lắp. B B UNION ALL A B Mệnh đề UNION ALL sẽ không loại bỏ các dòng trùng lắp A 3TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Cú pháp mệnh đề UNION SELECT danh_sach_cot_1 FROM Ten_bang_1 UNION SELECT danh_sach_cot_2 FROM ten_bang_2 [ORDER BY ds_cot_sap_xep] • Ví dụ SELECT mavtu,‘N’ as LOAI, sum(slnhap) as TONGSL FROM CTNVT GROUP BY mavtu UNION SELECT mavtu,‘X’ as LOAI, sum(slxuat) as TONGSL FROM CTXVT GROUP BY mavtu 4TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Mệnh đề EXCEPT • Trả về những dòng có trong kết quả bên trái và không có trong kết quả bên phải • VD : Tìm những mặt hàng chưa xuất bao giờ SELECT mavt FROM vattu EXCEPT SELECT mavt FROM ctpx A B EXCEPT 5TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Mệnh đề INTERSECT • Trả về những dòng có trong kết quả của cả 2 bên • VD : Tìm những mặt hàng vừa có nhập, vừa có xuất Select mavt from ctpn INTERSECT Select mavt from ctpx A B INTERSECT 6TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Phần mở rộng của mệnh đề GROUP BY 7TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Toán tử ROLLUP • ROLLUP, CUBE là phần mở rộng của mệnh đề GROUP BY • Sử dụng để phát sinh các tổng trung gian từ các cột trong group by SELECT [cot,] ham_phan_nhom(cot). . . FROM ten_bang [WHERE dieu_kien] [GROUP BY bieu_thuc_phan_nhom [WITH ROLLUP]] [HAVING bieu_thuc_loc_nhom]; [ORDER BY cot]; 8TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ toán tử ROLLUP SELECT maphong, macongviec, SUM(mucluong) as Luong FROM qlns.nhanvien WHERE maphong < 60 GROUP BY maphong, macongviec WITH ROLLUP 1 2 3 9TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ toán tử CUBE SELECT maphong, macongviec, SUM(mucluong) FROM qlns.nhanvien WHERE maphong < 60 GROUP BY maphong, macongviec WITH CUBE 1 2 4 3 10 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Hàm GROUPING • Hàm GROUPING có thể sử dụng với CUBE hoặc ROLLUP. • Sử dụng hàm GROUPING để tìm những dòng tổng được thêm bổ sung do các toán tử CUBE hoặc ROLLUP. • Hàm GROUPING trả về giá tri 0 hoặc 1. SELECT [cot,] ham_phan_nhom(cot) . , GROUPING(bieu_thuc) FROM ten_bang [WHERE dieu_kien] [GROUP BY bieu_thuc_phan_nhom [WITH ROLLUP|CUBE]] [HAVING bieu_thuc_loc_nhom] [ORDER BY cot]; 11 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ hàm GROUPING SELECT maphong maph, macongviec macv, SUM(mucluong), GROUPING(maphong) nhom_maph, GROUPING(macongviec) nhom_macv FROM qlns.nhanvien WHERE maphong < 50 GROUP BY maphong, macongviec WITH ROLLUP 2 3 1 12 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Một số mệnh đề khác trong SELECT 13 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Chép dữ liệu ra bảng khác • Sử dụng mệnh đề SELECT INTO − Chép dữ liệu ra bảng mới − Chỉ chạy được 1 lần, ở lần sau bảng đã tồn tại thì sẽ gây ra lỗi • Cú pháp SELECT ds_cac_cot INTO ten_bang_moi FROM ten_bang … 14 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Tổng hợp dữ liệu cuối nhóm • Mệnh đề COMPUTE, COMPUTE … BY − Sử dụng chung với các hàm thống kê SUM, COUNT, MAX, MIN, AVG − Với Compute By, phải có mệnh đề ORDER BY đi kèm • Cú pháp SELECT ds_cac_cot FROM ten_bang [ORDER BY Ten_cot_phan_nhom] COMPUTE COUNT|MIN|MAX|SUM|AVG (Ten_cot) [BY Ten_cot_phan_nhom]
File đính kèm:
- SQL Server - Tích hợp kết quả từ nhiều câu truy vấn.pdf