牛客在线编程练习:SQL28_较难

本文介绍了一道SQL练习题,目标是从数据库中找出描述信息包含“robot”的电影及其所属分类名称,并统计符合条件的电影数量,同时要求该分类至少包含5部电影。通过连接多个表并使用恰当的筛选条件实现这一需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL练习:SQL28_较难


题目: 查找描述信息(film.description)中包含robot的电影对应的分类名称(category.name)以及电影数目(count(film.film_id)),而且还需要该分类包含电影总数量(count(film_category.category_id))>=5部

CREATE TABLE IF NOT EXISTS film (
'film_id' smallint(5)  NOT NULL DEFAULT '0',
'title' varchar(255) NOT NULL,
'description' text,
PRIMARY KEY ('film_id'));

CREATE TABLE category  (
'category_id'  tinyint(3)  NOT NULL ,
'name'  varchar(25) NOT NULL, 
'last_update' timestamp,
PRIMARY KEY ('category_id'));

CREATE TABLE film_category  (
'film_id' smallint(5)  NOT NULL,
'category_id' tinyint(3)  NOT NULL, 
'last_update' timestamp);

在这里插入图片描述
题解

# 思路:先找电影数>5的分类,然后按条件连接表就搞定了
SELECT C.name,count(F.film_id) # 统计每个分类含'robot'的电影数
FROM category C
JOIN film_category FC ON FC.category_id = C.category_id
JOIN film F ON FC.film_id = F.film_id AND F.description LIKE '%robot%' #选出有robot字段的电影
WHERE C.category_id IN (
    SELECT category_id
    FROM film_category
    GROUP BY category_id
    HAVING COUNT(category_id) >= 5 # 电影数>5的分类
)
GROUP BY C.category_id
  • 个人整理的笔记,仅供学习使用,有问题麻烦指正。
  • 题目来源于:牛客网
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值