我完全被我的家庭作业困住了。我正在使用Sakila样本数据库。我应该写一个查询,它会给予我一个所有租了超过10部恐怖电影的客户的列表。这是我到目前为止所做的:
select CONCAT(c.first_name, " ", c.last_name) AS "Customer name",
FROM customer AS c
INNER JOIN rental AS r
ON c.customer_id = r.customer_id
inner join inventory as i
on i.inventory_id = r.inventory_id
inner join film_category as fc
on i.film_id = fc.film_id
inner join
(select * from category as ca
where ca.name = 'horror') as h
on h.category_id = fc.category_id
;
我可以让它返回所有(846)租过恐怖片的客户,但是怎么只拿到那些租过10部以上恐怖片的客户呢,我知道我需要COUNT功能,但是我放进去的时候,它给我1个人,还有一个846的计数,这是一个人的计数,不是租来的恐怖片。我的逻辑在这一点上失败了。请帮帮我!
3条答案
按热度按时间pxiryf3j1#
不幸的是,我不知道所讨论的示例数据库。但是,我觉得这不会影响我对这个问题的回答。
如果要使用COUNT,还需要使用GROUP BY来实现聚合计数。
您还可以使用HAVING子句查看GROUP BY。
z5btuh9x2#
如果有人需要简单的食物:
xdnvmnnf3#
您也可以编写一个不带左连接/内连接的查询。注意,没有客户拥有超过10个恐怖租赁,所以空结果不应该让您感到困惑(尝试使用2,它会工作!)