01/10/2018, 16:38

Giúp truy vấn trong sql server

E mới học sql server mà thầy cho bài tập nâng cao làm e rối quá, mọi người giúp e với ạ

Câu 1:Cho biết học viên (mã học viên, tên học viên) thi môn nào cũng đạt(chỉ xét làn thi thứ 1)
Câu 2:Cho biết học viên (mã học viên, tên học viên) thi môn nào cũng đạt(chỉ xét làn thi sau cùng)
Câu 3:Cho biết học viên (mã học viên, tên học viên) đã thi tất cả các môn đều đạt (chỉ xét lần thi thứ 1)
Câu 4:Cho biết học viên (mã học viên, tên học viên) đã thi tất cả các môn đều đạt (chỉ xét lần thi sau cùng)
Câu 5:Cho biết học viên (mã học viên, tên học viên) có điểm thi cao nhất trong từng môn(lấy điểm ở lần thi sau cùng)

Đây là 2 bảng dữ liệu liên quan HOCVIENKETQUATHI

duong viết 18:41 ngày 01/10/2018

Cho mình xin file script.sql để test đi bạn

Tran Hoang viết 18:46 ngày 01/10/2018

Đây bạn
https://drive.google.com/open?id=12DSftaB1QRshqYIl8dVBNEOMziTVbRDH

duong viết 18:39 ngày 01/10/2018

Câu 1:

SELECT		MAHV
	,		TEN
FROM		HOCVIEN

WHERE		MAHV NOT IN
(
	SELECT		MAHV
	FROM		KETQUATHI
	WHERE		LANTHI = 1
	AND			KQUA = N'Không Đạt'
	GROUP BY	MAHV
)

Câu 2:

SELECT		MAHV
	,		TEN
FROM		HOCVIEN

WHERE		MAHV NOT IN
(
	SELECT		MAHV
	FROM		KETQUATHI	T1
	WHERE		LANTHI = (SELECT MAX(LANTHI) FROM KETQUATHI T2 WHERE  T2.MAHV = T1.MAHV)
	AND			KQUA = N'Không Đạt'
	GROUP BY	MAHV
)

Câu 3: Mình chưa hiểu yêu cầu câu 3 khác với yêu cầu câu 1 chỗ nào
Câu 4: Mình chưa hiểu yêu cầu câu 4 khác với yêu cầu câu 2 chỗ nào

Tran Hoang viết 18:43 ngày 01/10/2018

Ở câu 1 có 1 đk nữa là thi môn nào cũng đạt tức là 1 học viên thi 4 môn nhưng trong 4 môn có 1 môn không đạt thì không được xuất.
Mình đã làm đc câu 1 như thế này

SELECT KETQUATHI.MAHV, H.HO + ’ ’ + H.TEN AS [HỌ TÊN], COUNT(KETQUATHI.MAMH) AS SOMON
FROM KETQUATHI
INNER JOIN HOCVIEN H ON KETQUATHI.MAHV=H.MAHV
WHERE LANTHI=1
GROUP BY KETQUATHI.MAHV, H.HO + ’ ’ + H.TEN
HAVING COUNT(KETQUATHI.MAMH)= (SELECT SLDAT
FROM (SELECT MAHV, COUNT(KQUA) AS SLDAT
FROM KETQUATHI
WHERE LANTHI=1 AND KQUA=N’ĐẠT’
GROUP BY MAHV) AS KQDAT
WHERE KETQUATHI.MAHV=KQDAT.MAHV)

Ở câu 2 cũng tương tự như câu 1 nhưng đk (chỉ xét lần sau cùng)
Câu 3 câu 4 thì mình nghĩ cần bảng môn học

Bài liên quan
0