4.2.4 Truy vấn theo nhóm
Có lúc ta chỉ muốn biết tổng số theo từng nhóm dữ liệu. Ví dụ ta muốn biết trong ng ày 14/12/07 (bảng SoLuong) số lượng các mặt hàng bán ra là bao nhiêu? Hay s ố lượng ứng với mặt hàng M1 bán ra trong các ngà y là bao nhiêu? v.v.. Rõ ràng ta ph ải tính tổng theo nhóm. Để tính toán người ta thường dùng các hàm sau:
Sum: Tính tổng mỗi trường trong mỗi nhóm.
Avg: Tính tổng trung bình của trường trong mỗi nhóm.
Min: Tìm giá trị nhỏ nhất của trường trong mỗi nhóm
Max: Tìm giá trị lớn nhất của trường trong mỗi nhóm
Count: Cho biết số bản ghi của trường trong nhóm
Sau đây là ví dụ về truy vấn theo nhóm; Ta trở lại bảng SoLuong như sau:
1. Nhóm theo ngày tháng
Câu hỏi: Trong 3 ngày 14, 15, 16 tháng 12 năm 2007 s ố lượng bán ra trong mỗi ngày là bao nhiêu (bằng mắt ta biết ngay 14/12/2007 l à 6 cái, 15/12/2007 là 2 cái và 16/12/2007 là 5 cái). Ta tạo truy vấn như sau:
Tạo truy vấn ứng với bảng SoLuong:
Kích vào nút
trên thanh công cụ hoặc chọn View/Totals, ta có hộp thoại sau:
Ta thấy xuất hiện thêm dòng Total, hãy đưa trường Ngay_Thang vào cột thứ nhất ở dòng Field và Group By vào dòng Total. Hãy đưa So_Luong vào cột thứ hai ở dòng Field và Sum vào dòng Total, như hình sau:
Chọn Query/Run hoặc kích vào nút trên thanh công cụ, kết quả như sau:
2. Nhóm theo mã hàng
Câu hỏi: ứng với mỗi mã mặt hàng (M1, M2, M3) thì số lượng là bao nhiêu?
Tạo truy vấn theo nhóm ứng với bảng SoLuong
Đưa vào tên trường Ma _Mat_Hang ở cột thứ nhất ứng với d òng Field
Đưa vào tên Group By ở cột thứ nhất ứng với d òng Total
Đưa vào tên trường So_Luong ở cột thứ hai ứng với d òng Field
Đưa vào tên Sum ở cột thứ hai ứng với d òng Total
Ta có hình như sau:
Chọn Query/Run ta có kết quả:
3. Nhóm theo một yếu tố nào đó nhưng có điều kiện
Câu hỏi: Nhóm theo ngày nhưng ch ỉ với mặt hàng M1 hoặc M2 Ta đưa vào truy vấn như sau:
Đưa vào tên trường Ngay_Thang ở cột thứ nhất ứng với dòng Field
Đưa vào thông số Group By ở cột thứ nhất ứng với d òng Total
Đưa vào tên trường So_Luong ở cột thứ hai ứng với d òng Field
Đưa vào tên Sum ở cột thứ hai ứng với d òng Total
Đưa vào tên trường Ma_Mat_Hang ở cột thứ 3 ứng với dòng Field
Đưa vào từ Where ở dòng Total ứng với cột Ma_Mat_Hang
Ứng với cột Ma_Mat_Hang ở dòng Criteria gõ =”M1”
Ứng với cột Ma_Mat_Hang ở dòng or gõ =”M2” Như hình sau:
Chọn Query/Run ta có:
4. Dùng hàm Count
Câu hỏi: ứng với mỗi ngày có bao nhiêu mặt hàng? Tạo truy vấn như hình sau:
Chọn Query/Run ta có:
5. Tạo truy vấn theo hỏi đáp
Câu hỏi: Số lượng bán ra trong mỗi ngày (ngày nào sẽ hỏi sau) là bao nhiêu?
Ta thao tác như sau:
Tạo truy vấn theo nhóm ứng với bang So_luong
Đưa vào tên trường Ngay_Thang ở cột thứ nhất ứng với d òng Field
Đưa vào tên Group By ở cột thứ nhất ứng với d òng Total
Đưa vào tên trường So_Luong ở cột thứ hai ứng với d òng Field
Đưa vào tên Sum ở cột thứ hai ứng với d òng Total
Đưa vào cột thứ nhất ở dòng Criteria tham số: [Bạn hỏi ngày nào?] Hãy xem hình sau:
Chọn Query/Run ta có hộp thoại:
Hãy gõ vào ngày cần hỏi, giả sử gõ vào 12/14/07 và chọn OK ta có:
4.2.5 Truy vấn Crosstab
Access hỗ trợ một loại truy vấn theo nhóm đặc biệt gọi l à Crosstab. Để hiểu loại truy vấn này chúng ta nên xuất phát từ bảng sau:
Giả sử ta có bảng với tên Mua_Hang như sau:
Ta muốn truy vấn thành dạng sau:
Bia | Ruou | Nuoc Ngot | |
Hoang Thi Lan | 500000 | 600000 | 400000 |
Le Quynh Hoa | 750000 | 300000 | 250000 |
Có thể bạn quan tâm!
- Quản trị cơ sở dữ liệu Access - Đại học Kinh doanh và Công nghệ Hà Nội - 2
- Sắp Xếp Đơn Giản Một Trường Ta Làm Như Sau:
- Gõ Tiêu Chuẩn G (=14) Vào Dòng Criteria Ứng Với Trường Tính_Toán
- Sử Dụng Phương Tiện Truy Vấn Query Wizard
- Truy Vấn Bằng Cách Chọn Crosstab Query Wizard
- Tạo Một Biểu Mẫu Từ Một Bảng Đ Ã Có Bằng Form Wizard5
Xem toàn bộ 145 trang tài liệu này.
Nghĩa là chuyển tên mặt hàng (Bia, Ruou, v.v..) thành c ột và tiền mỗi loại nước giải khát
thành hàng ứng với tên người mua và cột loại hàng tương ứng. Để làm được điều đó bạn hãy thao tác như sau:
Mở truy vấn với bảng Mua_Hang, sau đó vẫn chọn Design View và OK
Chọn tiếp Query/Crosstab Query, ta có hộp thoại:
Hộp thoại truy vấn có th êm dòng Crosstab, hãy đưa các thông số vào như sau:
1. Ở cột thứ nhất:
ứng với dòng Field đưa vào tên trường: Ho_Ten_Nguoi_Mua.
ứng với dòng Total đưa vào thông số: Group By.
ứng với dòng Crosstab đưa vào thông số: Row Heading
2. Ở cột thứ hai:
ứng vớt dòng Field đưa vào tên trường: So_Tien
ứng với dòng Total đưa vào hàm: Sum
ứ ng với dòng Crostab đưa vào thông số: Value
3. ở cột thứ ba:
ứng với dòng Field đưa vào thông số Format([Loai_Hang])
ứng với dòng Total đưa vào thông số: Group By
ứng với dòng Crosstab đưa vào thông số: Colunmn Heading
Hãy xem hình ảnh đưa vào như sau:
Chạy truy vấn này (chọn Query/Run) ta có kết quả:
Giải thích:
Hàm Format ([Loai_Hang]) sẽ tạo các tên cột ứng với loại hàng, ở trên tên ngầm định
của cột là Exprl: hoặc tự đặt trước khi gõ hàm Format()
Ở cột thứ nhất ta chọn Row Heading ứng với dòng Crosstab bởi vì ta định họ tên người
mua vẫn phân bố theo dòng.
Ở cột thứ hai ta chọn Sum ứng với Total (thực ra trong trường hợp này chưa phải tính tổng, vì có một giá trị) và Value ứng với dòng Crosstab bởi vì ta định biến giá trị (tiền) đó phân bố theo dòng.
Ở cột thứ ba chọn Column Heading ứng với dòng Crosstab bởi vì ta định biến tên mặt hàng đóng vai trò cột nhờ hàm Format([Loai_Hang]).
Một số ví dụ khác: