我从我的SQL类遇到了一个问题,但没有解决方案。我的查询只需要显示具有相同数量的女性和男性演员的电影。
我有三张桌子: (表:字段1,字段2):
Casting: actor_number, movie_number
Actor_List: id, name, gender
Movie_List: id, movie_name
答案 0 :(得分:2)
子查询使用一点CASE()技巧来有条件地增加计数(即countif
)。子查询因子分解语法意味着我们只执行一次查询。
with cte as (
select m.movie_name
, sum(case when a.gender = 'M' then 1 else 0 end) as male_tot
, sum(case when a.gender = 'F' then 1 else 0 end) as female_tot
from casting c
join movie_list m
on c.movie_number = m.id
join actor_list a
on c.actor_number = a.id
group by m.name
)
select cte.*
from cte
where cte.male_tot = cte.female_tot ;