sql - SQL Excercise(演员人数众多的电影)
问题描述
我正在做一个 SQL 练习,任务是:输出所有涉及超过 9 个演员的电影。还要指定演员的数量,按 Number_Actors 升序排序,然后按电影标题排序。放映列表:Film_Id、电影名称、Number_Actors。不幸的是,我被卡住了,不知道我做错了什么。
SELECT film_id, title, COUNT(film_id) AS number_actors
FROM (
SELECT film.title
FROM film
INNER JOIN film ON film_actor.film_id = film.film_id
WHERE number_actors > 9
)
GROUP BY number_actors
ORDER BY number_actors, film
解决方案
您可以通过表格中的聚合得到每部电影的演员人数film_actor
。
如果您还设置了条件......在子句中涉及超过 9 个演员HAVING
,那么您只会得到您想要的电影的 ID:
SELECT film_id, COUNT(*) Number_Actors
FROM film_actor
GROUP BY film_id
HAVING COUNT(*) > 9
您可以将表加入film
到上述查询中:
SELECT f.film_id, f.title, t.Number_Actors
FROM film f
INNER JOIN (
SELECT film_id, COUNT(*) Number_Actors
FROM film_actor
GROUP BY film_id
HAVING COUNT(*) > 9
) t ON t.film_id = f.film_id
ORDER BY t.Number_Actors, f.title
推荐阅读
- azure - 灾难恢复 Azure 资源组区域停机 发生了什么
- linux - 如何调试程序集?
- dolphindb - 我在dolphindb中运行代码,但报错,如何解决?
- c# - JetBrains Rider 重构从扫描中排除路径
- javascript - 如何对由标记添加的自定义图标进行聚类
- php - 为什么来自 MySQL 的十进制值被转换为/显示为整数?
- c# - `Where`中使用新对象的Linq查询性能
- python - 在引导前端显示 Flask 下拉菜单
- javascript - 将自定义标头与 XMLHttpRequest Open 一起使用时,Jquery.get 函数被无限次调用
- vue.js - 无法从 localhost 与启用 HTTPS 的服务通信