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
- 个人整理的笔记,仅供学习使用,有问题麻烦指正。
- 题目来源于:牛客网