Cơ sở dữ liệu ‘QuanLyTuyenSinh’có bảng: DiemKhoiA(SoBaoDanh Nvarchar(50), DiemToan Float, DiemLy Float, DiemHoa Float, DiemUuTien Float, TongDiem Float, KetQua Nvarchar(50)). Sử dụng câu lệnh hợp lý để đếm số thí sinh của từng loại tổng điểm cho những thí sinh có kết quả đỗ:
A.
SELECT TongDiem, count() FROM DiemKhoiA WHERE KetQua = ‘đỗ’ GROUP BY TongDiem
B.
SELECT TongDiem, count() FROM DiemKhoiA GROUP BY TongDiem WHERE KetQua = ‘đỗ’
C.
SELECT TongDiem, count() FROM DiemKhoiA GROUP BY TongDiem = count(TongDiem) WHERE KetQua = ‘đỗ’
D.
SELECT TongDiem, count() FROM DiemKhoiA WHERE KetQua = ‘đỗ’
Trả lời:
Đáp án đúng: A
Câu lệnh SQL cần tìm phải thực hiện việc đếm số lượng thí sinh theo từng tổng điểm (TongDiem) nhưng chỉ tính những thí sinh có kết quả đỗ (KetQua = 'đỗ').
* **Phương án A:** `SELECT TongDiem, count() FROM DiemKhoiA WHERE KetQua = ‘đỗ’ GROUP BY TongDiem`
* Đây là câu lệnh đúng. `WHERE KetQua = ‘đỗ’` lọc ra các thí sinh đỗ. `GROUP BY TongDiem` nhóm các thí sinh theo từng giá trị tổng điểm. `count()` đếm số lượng thí sinh trong mỗi nhóm.
* **Phương án B:** `SELECT TongDiem, count() FROM DiemKhoiA GROUP BY TongDiem WHERE KetQua = ‘đỗ’`
* Sai cú pháp. Mệnh đề `WHERE` phải đứng trước `GROUP BY`.
* **Phương án C:** `SELECT TongDiem, count() FROM DiemKhoiA GROUP BY TongDiem = count(TongDiem) WHERE KetQua = ‘đỗ’`
* Sai cú pháp và sai logic. `GROUP BY TongDiem = count(TongDiem)` không có nghĩa và `WHERE` phải đứng trước `GROUP BY`.
* **Phương án D:** `SELECT TongDiem, count() FROM DiemKhoiA WHERE KetQua = ‘đỗ’`
* Thiếu mệnh đề `GROUP BY TongDiem`, do đó không thể đếm số lượng thí sinh theo từng tổng điểm khác nhau. Câu lệnh này chỉ đếm tổng số thí sinh đỗ.
Vậy, phương án A là phương án đúng nhất.