首页 > 试题广场 >

找出你最喜欢的电影

[编程题]找出你最喜欢的电影
  • 热度指数:55 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

表: 电影表

+----------+--------------+
|  字段名称 | 类型         | 
+----------+--------------+
| 电影编号  | int(11)      |
| 电影名称 | varchar(512) | 
| 电影描述信息  | varchar(512) |
+----------+--------------+
电影编号 是该表的主键。
该表的每一行记录电影相关信息,包含了电影编号、电影名称、电影描述信息。

表: 类别表

+-------------+--------------+
| 字段名称     | 类型     |
+-------------+--------------+
| 电影类别编号  | int(11)    |
| 电影类别名称  | varchar(512) |
| 电影类别最后更新时间 | date(255) |
+-------------+---------------+

电影类别编号 是该表的主键。 
该表的每一行记录了电影属于哪个类别的信息,包括电影类别编号、电影类别名称、电影类别最后更新时间。

表: 电影类别表

+-------------+--------------+
| 字段名称     | 类型     |
+-------------+--------------+
| 电影编号  | int(11)      |
| 电影类别编号  | int(11)    |
| 最后更新时间 | date(255) |
+-------------+---------------+

电影编号 、电影类别编号是该表的主键。 
电影编号 是 “电影表” 中 电影编号 的外键、
电影类别编号号 是 “类别表“中 电影类别编号 的外键。
“电影类别表”记录了电影编号和电影类别编号的关系,包括电影类别编号、电影类别编号、最后更新时间。

 

编写一个SQL查询,查询电影类别名称及其对应的电影数。 要求电影描述信息中含有关键字“机器人”且电影类型满足该电影类型下拥有的总电影数 >=5。

查询结果如下例所示。

 

示例 1:

输入: 表:电影表
+--------+-----------+-------------------------+
|  电影编号  |  电影名称     |  电影描述信息                 |
+--------+-----------+-------------------------+
| 1      |  肖申克的救赎   |  希望让人自由                 |
| 2      |  霸王别姬     |  风华绝代                   |
| 3      |  阿甘正传     |  一部美国近代史                |
| 4      |  机器人总动员   |  机器人小瓦利,大人生             |
| 5      |  这个杀手不太冷  |  怪蜀黍和小萝莉不得不说的故事         |
| 6      |  美丽人生     |  最美的谎言                  |
| 7      |  阿凡达      |  绝对意义上的美轮美奂             |
| 8      |  盗梦空间     |  诺兰给了我们一场无法盗取的梦         |
| 9      |  楚门的世界    |  如果再也不能见到你,祝你早安,午安,晚安   |
| 10     |  星际穿越     |  爱是一种力量,让我们超越时空感知它的存在   |
+--------+-----------+-------------------------+

表:类别表
+--------+--------+-------------+
| 电影类别编号 | 电影类别名称 | 最后更新时间  |
+--------+--------+-------------+
| 1      | 犯罪     | 2020-05-05  |
| 2      | 爱情     | 2020-05-06  |
| 3      | 科幻     | 2020-05-10  |
+--------+--------+-------------+

表:电影类别表
+------+--------+-------------+
| 电影编号 | 电影类别编号 | 最后更新时间      |
+------+--------+-------------+
| 1    | 1      | 2020-05-01  |
| 2    | 2      | 2020-05-02  |
| 3    | 2      | 2020-05-03  |
| 4    | 3      | 2020-05-04  |
| 5    | 1      | 2020-05-05  |
| 6    | 2      | 2020-05-06  |
| 7    | 3      | 2020-05-07  |
| 8    | 3      | 2020-05-08  |
| 9    | 3      | 2020-05-09  |
| 10   | 3      | 2020-05-10  |
+------+--------+-------------+ 输出: +-------+---------+
|电影类别名称 | 电影数 |
+-------+---------+
| 科幻     | 1   |
+-------+---------+

示例1

输入

CREATE TABLE IF NOT EXISTS 电影表
(
     电影编号 INT,
     电影名称 VARCHAR(512),
     电影描述信息 VARCHAR(512)
);
CREATE TABLE IF NOT EXISTS 类别表
(
    电影类别编号 INT,
    电影类别名称 VARCHAR(512),
    电影类别最后更新时间 DATE
);

CREATE TABLE IF NOT EXISTS 电影类别表 
(
    电影编号 INT,
    电影类别编号 INT,
    最后更新时间 DATE
);

INSERT INTO 电影表 (电影编号, 电影名称, 电影描述信息) VALUES (1, '肖申克的救赎', '希望让人自由');
INSERT INTO 电影表 (电影编号, 电影名称, 电影描述信息) VALUES (2, '霸王别姬', '风华绝代');
INSERT INTO 电影表 (电影编号, 电影名称, 电影描述信息) VALUES (3, '阿甘正传', '一部美国近代史');
INSERT INTO 电影表 (电影编号, 电影名称, 电影描述信息) VALUES (4, '机器人总动员', '机器人小瓦利,大人生');
INSERT INTO 电影表 (电影编号, 电影名称, 电影描述信息) VALUES (5, '这个杀手不太冷', '怪蜀黍和小萝莉不得不说的故事');
INSERT INTO 电影表 (电影编号, 电影名称, 电影描述信息) VALUES (6, '美丽人生', '最美的谎言');
INSERT INTO 电影表 (电影编号, 电影名称, 电影描述信息) VALUES (7, '阿凡达', '绝对意义上的美轮美奂');
INSERT INTO 电影表 (电影编号, 电影名称, 电影描述信息) VALUES (8, '盗梦空间', '诺兰给了我们一场无法盗取的梦');
INSERT INTO 电影表 (电影编号, 电影名称, 电影描述信息) VALUES (9, '楚门的世界', '如果再也不能见到你,祝你早安,午安,晚安');
INSERT INTO 电影表 (电影编号, 电影名称, 电影描述信息) VALUES (10, '星际穿越', '爱是一种力量,让我们超越时空感知它的存在');
INSERT INTO 类别表 (电影类别编号, 电影类别名称, 电影类别最后更新时间) VALUES (1, '犯罪', '2020-05-05');
INSERT INTO 类别表 (电影类别编号, 电影类别名称, 电影类别最后更新时间) VALUES (2, '爱情', '2020-05-06');
INSERT INTO 类别表 (电影类别编号, 电影类别名称, 电影类别最后更新时间) VALUES (3, '科幻', '2020-05-10');
INSERT INTO 电影类别表 (电影编号, 电影类别编号, 最后更新时间) VALUES (1, 1, '2020-05-01');
INSERT INTO 电影类别表 (电影编号, 电影类别编号, 最后更新时间) VALUES (2, 2, '2020-05-02');
INSERT INTO 电影类别表 (电影编号, 电影类别编号, 最后更新时间) VALUES (3, 2, '2020-05-03');
INSERT INTO 电影类别表 (电影编号, 电影类别编号, 最后更新时间) VALUES (4, 3, '2020-05-04');
INSERT INTO 电影类别表 (电影编号, 电影类别编号, 最后更新时间) VALUES (5, 1, '2020-05-05');
INSERT INTO 电影类别表 (电影编号, 电影类别编号, 最后更新时间) VALUES (6, 2, '2020-05-06');
INSERT INTO 电影类别表 (电影编号, 电影类别编号, 最后更新时间) VALUES (7, 3, '2020-05-07');
INSERT INTO 电影类别表 (电影编号, 电影类别编号, 最后更新时间) VALUES (8, 3, '2020-05-08');
INSERT INTO 电影类别表 (电影编号, 电影类别编号, 最后更新时间) VALUES (9, 3, '2020-05-09');
INSERT INTO 电影类别表 (电影编号, 电影类别编号, 最后更新时间) VALUES (10, 3, '2020-05-10');

输出

电影类别名称|电影数
科幻|1
select
z.电影类别名称
,count(*) as 电影数
from 电影表 x 
join 电影类别表 y 
on x.电影编号=y.电影编号
join 类别表 z 
on z.电影类别编号=y.电影类别编号
where 电影描述信息 regexp "机器人" and 
(select count(*) from 类别表 x join 电影类别表 y using(电影类别编号)
where 电影类别名称=z.电影类别名称)>=5
group by 1

发表于 2025-11-13 13:54:05 回复(0)