SQL:如果没有,有没有办法计算表中值的数量?

Posted

技术标签:

【中文标题】SQL:如果没有,有没有办法计算表中值的数量?【英文标题】:SQL: is there a way to count the number of values from a table if there are none? 【发布时间】:2022-01-10 03:15:00 【问题描述】:

所以我有两张表,一张是“电影”(movie,type,lenght),一张是“演员表”(title_movie,id_actor),我必须计算每个演员演过多少“科幻”电影。

我试过了:

SELECT id_actor, Count(type)
FROM Cast, Movies 
WHERE type='SF' and  title_movie=movie
GROUP BY id_actor;

它只显示至少有 1 部 SF 电影的演员,不显示那些有 0 部电影的演员。有什么想法吗?

【问题讨论】:

今日提示:始终使用现代、明确的JOIN 语法。更容易编写(没有错误),更容易阅读(和维护),并且如果需要更容易转换为外连接 【参考方案1】:

LEFT JOIN 获取所有演员。要仅计算 SF 电影,请使用 case 表达式 进行条件聚合

SELECT id_actor, sum(case when type = 'SF' then 1 else 0 end)
FROM Cast
LEFT JOIN Movies ON title_movie = movie
GROUP BY id_actor;

【讨论】:

以上是关于SQL:如果没有,有没有办法计算表中值的数量?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL,怎么根据一个字段的值,计算另外一个字段的数量?

计算斜率的数量,SQL中值变化的数量

有没有办法根据 Hive/SQL 中的条件初始化计数器?

mysql 统计每月的数量 sql

组合 SQL 查询,基于计算连接表

sql SQL计算表中值实例的百分比