mysql - SQL:选择子查询的总和

标签 mysql sql sum subquery aggregate-functions

我有一些包含电影、 Actor 和类别数据的相关表。我试图总结每个 Actor 在特定类别中的电影长度。

以下是我必须尝试在结果中包含类别 ID 子查询的总和:

SELECT actor.actor_id, (SELECT SUM(length) from film WHERE category_id=14) total
FROM actor
JOIN film_actor USING(actor_id)
JOIN film USING(film_id)
JOIN film_category USING(film_id)
JOIN category USING(category_id)
GROUP BY actor.actor_id
ORDER BY total DESC

但是我的 total 列只包含所有 NULL 值。

此查询有效,但不包括在此类别中观看过 0 分钟电影的 Actor :

SELECT actor.actor_id, SUM(film.length) as total
FROM actor
JOIN film_actor USING(actor_id)
JOIN film USING(film_id)
JOIN film_category USING(film_id)
JOIN category USING(category_id)
WHERE category_id = 14
GROUP BY actor.actor_id

最佳答案

您需要一个外连接,并且类别的条件属于外连接的 on 子句:

select a.actor_id,
       sum(f.length) as total
  from actor a
  join film_actor fa
    on a.actor_id = fa.actor_id
  join film f
    on fa.film_id = f.film_id
  left join film_category fc
    on fc.film_id = f.film_id
   and fc.category_id = 14
 group by a.actor_id

关于mysql - SQL:选择子查询的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31361903/

相关文章:

mysql - 在同一调用中将列转换为不同类型

php - 要在 php 中显示的总和值

c# - 如何在未安装 SQL Server 的计算机上使用 SQL 数据库运行应用程序

php - SQL从表中选择不同的最后一个值

python - 添加列并选择总和最大的列

javascript - 使用 $.post 加载数据

mysql - 复杂的 MYSQL 查询 4 ​​个表寻找 1 个结果

javascript - 函数的输出 = NAN

sql - 同一个表上的 2 个外部联接?

mysql - 限制MySQL中的行总和