SQL百分比查询

use*_*767 1 sql postgresql

我有两个表,我不会查询一些数据.问题是查询永远不会停止,也从不给出任何结果.

任务是获得所有男演员的百分比.

filmparticipation(partid, personid, filmid, parttype)

person(personid, lastname, firstname, gender)
Run Code Online (Sandbox Code Playgroud)

她是我的尝试,有人可以给我一个提示来完成任务吗?

SELECT (COUNT(p.personid) / COUNT(a.person)) * 100
FROM person p, person a, filmparticipation f
WHERE
f.parttype = 'cast' AND
p.gender = 'M';
Run Code Online (Sandbox Code Playgroud)

Red*_*ter 5

ON的联接没有任何条款,所以你加入每个记录与三个表中的每个其他记录!相反,尝试这样的事情:

select (count(case when p.gender = 'M' then 1 end) / count(*)) * 100
from person p
inner join filmparticipation f on p.personid = f.personid
where f.parttype = 'cast' 
Run Code Online (Sandbox Code Playgroud)