首页 > 解决方案 > SQL:查找至少进行 3 次预订的水手姓名

问题描述

所以我有这张桌子:

Sailors (sid, sname, rating, age)
Boats (bid, bname, color)
Reserves (sid, bid, date)

我认为会这样做的查询是:

SELECT Sailors.sname
FROM Sailors, Reserves
WHERE 3 <= COUNT(Reserves.sid = Sailor.sid)

我知道这个解决方案不起作用,但我不知道除此之外如何做。我是一个完整的 SQL 初学者,所以如果你能解释你输入的任何代码,那就太好了。

标签: sql

解决方案


你可以这样做-

 SELECT Sailors.sname
 FROM Sailors
 JOIN Reserves
 ON Sailors.sid = Reserves.sid
 GROUP BY Sailors.name
 HAVING count(Reserves.bid) >= 3;

编辑:上面的逻辑在水手姓名级别/粒度上聚合(使用 group by 子句),以便可以在每个水手的聚合级别上计算预订数量,然后使用用于聚合比较的 having 子句来检查给定的水手级别预订数量的标准


推荐阅读