使用sum()的SQL查询

l0aded1

您好,我目前正在研究无法完全弄清楚的SQL问题。这是我正在使用的架构:

在此处输入图片说明

这是我遇到的问题:

-3查找每个演员的科幻电影的名字,姓氏和合计电影长度。这就是结果应该列出所有演员的姓名(即使演员没有参加过任何科幻电影)也要列出他们参加过的科幻电影的总长度。

到目前为止,我有

SELECT actor.first_name, actor.last_name, (SELECT SUM(film.length)
from film 
INNER JOIN film_category
ON film.film_id = film_category.film_id
INNER JOIN category
ON film_category.category_id = category.category_id
INNER JOIN film_actor
ON film_actor.film_id = film.film_id
INNER JOIN actor
ON film_actor.actor_id = actor.actor_id
WHERE category.name = 'Sci-fi'
)
from actor

我知道我需要按actor_id对其进行分组,但是我无法在选择子查询中执行此操作。有人有提示吗?

账单

无需使用子查询。聚合函数适用于整个数据集。“分组依据”指定了如何对要汇总的数据进行分组。

select a.actor_id, a.first_name, a.last_name, sum(f.length)
  from actor a
  left outer join film_actor fa on fa.actor_id   = a.actor_id
  left outer join film       f  on f.film_id     = fa.film_id
  left outer join film_categories       fc on fc.film_id    = f.film_id
  left outer join categories            c  on c.category_id = fc.category_id
 where c.name = 'sci-fi'
  group by a.actor_id
;

外部连接确保没有科幻电影经验的演员被包括在以下结果中:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章