Mình gặp câu này quấn quá , mọi người cho mình chút ý tưởng được ko ạ mình dùng sql sever :
3.4. Bonus: Tìm những tài xế (MaTaiXe,TenTaiXe) đã lái tất cả các xe của công ty (1
điểm).
Hỏi về câu truy vấn sql server
Cách viết SQL là từ cái phức tạp, chuyển thành từng cái đơn giản rồi ráp lại.
Như câu trên, ta cần tìm:
1. Cty có tất cả bao nhiêu xe ?
SELECT count(*) FROM xetai ;
2. Số xe đã từng lái (ko trùng) của mỗi tài xế: do chỉ đếm ko trùng, nên dùng count(DISTINCT
xxx) thay vì count(xxx)
SELECT mataixe, count(DISTINCT bienso)
FROM vanchuyen
GROUP BY mataixe ;
3. Giờ thì ráp 2 câu lại để tìm được những mataixe có số xe đã lái bằng
số xe của cty
SELECT mataixe,
FROM vanchuyen
GROUP BY mataixe
HAVING count(DISTINCT bienso) = (SELECT count(*) FROM xetai) ;
Có mataixe cần tìm, giờ join
với TAIXE để lấy thêm tentaixe
nửa là xong câu query !
4 Likes
thanks bạn nhiều lấn quấn hôm qua giờ