giúp e bài query này với ạ

  • Thread starter Thread starter nhuy07bi
  • Ngày gửi Ngày gửi
Liên hệ QC

nhuy07bi

Thành viên mới
Tham gia
30/4/20
Bài viết
1
Được thích
0
Thiết kế query xếp loại học lực dựa vào điểm trung bình của các học sinh như
sau: MAHS HOTEN DIEMTB XEPLOAI.
Trong đó: Xếp loại dựa vào DIEMTB nếu DIEMTB>=8,Giỏi, DIEMTB>=6.5, Khá,
DIEMTB>=5, Trung bình, ngược lại, YếuScreenshot_2020-05-01-09-59-21-998_cn.wps.moffice_eng.png
 
Select bảng Học Sinh Join bảng Điểm, lọc nhũng ngày lớn hơn hay bằng 20061020 (?)
Group theo mã học sinh,
Dùng Max(họ tên) để lấy họ tên,
Dùng Average để lấy Trung Bình [TB]
Cột XL sẽ được tính bằng hàm IIF hoặc Switch như sau:
Switch([TB]>=8, "giỏi", [TB]>=6.5, "khá", [TB]>="trung bình", True, "yếu")

(nếu nó không nhận [TB] tại chỗ thì phải Select lại lần nữa, thêm cột [XL])

Tiêu đề này không hẳn là đúng quy luật diễn đàn. Tôi chỉ châm chế lần này thôi.
1588306010446.png
 
Chú thêm cho các bạn đang học CSDL:

Bài này là bài tập, Thầy/Cô kém kiến thức thực tế nên tôi mới giải như vậy.
Nếu thực tế là hệ thống của tôi thì tôi lập thêm một bảng nhỏ để xếp hạng.
Mã:
Điểm   Hạng
11.    Dummy
8.     Giỏi
6.5    Khá
5.     Trung Bình
0.     Yếu
Dùng một query để tự join bảng này với nó, và lấy được như sau
Mã:
Điểm   ĐiểmGH  Hạng   
8.     11.       Giỏi
6.5    8.        Khá
5.     6.5.      Trung Bình
0.     5.        Yếu
Query xếp hạng sẽ dùng dữ liệu trên.

Tại sao làm vậy?
Theo nguyên tắc CSDL LH thì query với dữ liệu điền thẳng vào (như bài #3) là loại "magic numbers".
Ví dụ có 10 cái queries như vậy thì mỗi lần thay đổi thang điểm lại phải lùng đủ 10 cái này ra chỉnh sửa? Phải báo những người dùng có queries triêng của mình tự sửa queries?
Dùng một bảng với query phụ như trên thì mỗi lần chinhr sửa tôi chỉ việc cóp lại cái bảng cũ, và cái query cũ, version chúng (bằng ngày). Sửa bang mới xong, tôi báo cho ngừoi dùng: "cách sắp hạng đã thay đổi kể từ ngày xyz Những queries báo cáo kể từ ngày này sẽ tự động theo quy trình mới. Nếu cần báo cáo trước ngày xyz thì nên chỉnh lại để sử dụng Query version xyz"
 
Lần chỉnh sửa cuối:
Chú thêm cho các bạn đang học CSDL:

Bài này là bài tập, Thầy/Cô kém kiến thức thực tế nên tôi mới giải như vậy.
Nếu thực tế là hệ thống của tôi thì tôi lập thêm một bảng nhỏ để xếp hạng.
Mã:
Điểm   Hạng
11.    Dummy
8.     Giỏi
6.5    Khá
5.     Trung Bình
0.     Yếu
Dùng một query để tự join bảng này với nó, và lấy được như sau
Mã:
Điểm   ĐiểmGH  Hạng   
8.     11.       Giỏi
6.5    8.        Khá
5.     6.5.      Trung Bình
0.     5.        Yếu
Query xếp hạng sẽ dùng dữ liệu trên.

Tại sao làm vậy?
Theo nguyên tắc CSDL LH thì query với dữ liệu điền thẳng vào (như bài #3) là loại "magic numbers".
Ví dụ có 10 cái queries như vậy thì mỗi lần thay đổi thang điểm lại phải lùng đủ 10 cái này ra chỉnh sửa? Phải báo những người dùng có queries triêng của mình tự sửa queries?
Dùng một bảng với query phụ như trên thì mỗi lần chinhr sửa tôi chỉ việc cóp lại cái bảng cũ, và cái query cũ, version chúng (bằng ngày). Sửa bang mới xong, tôi báo cho ngừoi dùng: "cách sắp hạng đã thay đổi kể từ ngày xyz Những queries báo cáo kể từ ngày này sẽ tự động theo quy trình mới. Nếu cần báo cáo trước ngày xyz thì nên chỉnh lại để sử dụng Query version xyz"
Cái bác @VetMini này cứ như con vẹt ấy, tiêu đề sai mà vẫn giúp
hi hi hi..........
Bác vui tính thế hở bác oi
 
Web KT

Bài viết mới nhất

Back
Top Bottom