Hỏi về câu truy vấn sql server

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).

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ờ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?