Bài 4.5 Tích hợp kết quả từ nhiều câu truy vấn SQL (STRUCTURED QUERY LANGUAGE)


Truy vấn dữ liệu trong sql thao tác này được sử dụng rất nhiều trong các hệ thống phần mềm hoặc website


Tích hợp kết quả từ nhiều câu truy vấn

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

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

Mệnh đề Except

VD : Tìm những mặt hàng chưa xuất bao giờ

SELECT mavt FROM vattu
EXCEPT
SELECT mavt FROM ctpx

Mệnh đề INTERSECT

Trả về những dòng có trong kết quả của cả 2 bên

Mệnh đề INTERSECT

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

GROUP BY 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]

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

Ví dụ toán tử ROLLUP

Ví dụ toán tử CUBE

SELECT maphong, macongviec, SUM(mucluong)
FROM qlns.nhanvien
WHERE maphong < 60
GROUP BY maphong, macongviec WITH CUBE

ví dụ sử dụng toán tử Cube

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]

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

Ví dụ hàm GROUPING

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

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]

Sử dụng mệnh đề COMPUTE BY và các hàm tính toán để thống kê theo nhóm dữ liệu

  • Hiển thị các thông tin trong bảng CTPXUAT và bổ sung thêm cột thành tiền, sao cho có dòng thống kê tổng thành tiền ở từng nhóm phiếu xuất
  • Hiển thị trong bảng CTPNHAP các thông tin: mã vật tư, sốnhập hàng, số lượng nhập, đơn giá nhập và có dòng thống kê tổng số lượng, giá thấp nhất, giá cao nhất ở từng vật tư

Giải bài tập :

--Câu 1
 
SELECT cx.sopx,cx.mavtu,cx.slxuat,cx.dgxuat
FROM ctpxuat AS cx
ORDER BY cx.sopx
compute  SUM(cx.dgxuat) BY cx.sopx
 
-- Câu 2
 
SELECT cn.mavtu,cn.slnhap,cn.sopn,cn.dgnhap
FROM ctpnhap AS cn
ORDER BY cn.mavtu
compute SUM(cn.slnhap),MIN(cn.dgnhap), MAX(cn.dgnhap) BY cn.mavtu

 

 

 

 

Chia sẽ bài viết :


Bài viết liên quan

Bài 5 Lập trình với CSDL

Hiểu và trình bày được các phương thức, thuộc tính của các đối tượng truy xuất cơ sở dữ liệu, cách thức truy xuất, duyệt nội dung cơ sở dữ liệu; các đ ...

Progressive Web Apps là gì?

Web Apps Progressive là một cấp độ hoàn toàn mới của chăm sóc về chất lượng trải nghiệm người dùng đầu cuối của bạn. Các nghiên cứu khác cho thấy kết ...

Bài 2 Ngôn ngữ HTML

HTML (HyperText Markup Language) là một ngôn ngữ đánh dấu siêu văn. Trang HTML được lưu với phần mở rộng là .htm hoặc .html