sql - 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 初学者,所以如果你能解释你输入的任何代码,那就太好了。
解决方案
你可以这样做-
SELECT Sailors.sname
FROM Sailors
JOIN Reserves
ON Sailors.sid = Reserves.sid
GROUP BY Sailors.name
HAVING count(Reserves.bid) >= 3;
编辑:上面的逻辑在水手姓名级别/粒度上聚合(使用 group by 子句),以便可以在每个水手的聚合级别上计算预订数量,然后使用用于聚合比较的 having 子句来检查给定的水手级别预订数量的标准
推荐阅读
- dataframe - 如何通过对现有列执行一些转换来使用 withcolumn 添加列?
- flutter - Flutter 动画更改对话框高度
- excel - 标签事件的循环控制 (mousevove)
- assembly - ARM Assembly如何打印数字而不是该数字的ASCII表示
- vue.js - Intellij 在同一个 .vue 文件中使用不同的缩进
- css - CSS BEM - 公共类的约定
- python - 如何在 Web 框架上显示数据库?
- gojs - “externalObjectDrop”函数中的“subject”参数为空
- amazon-web-services - 无法在 Azure 应用服务中挂载卷?
- python - 模拟对象的函数的模拟返回值