Sql 获取列中值的百分比

Sql 获取列中值的百分比,sql,Sql,我有一张叫做Director的桌子,看起来像 DirectorID FirstName FamilyName FullName DoB Gender 1 Steven Spielberg Steven Spielberg 1946-12-18 Male 2 Joel Coen Joel Coen 1954-11-29 Male

我有一张叫做Director的桌子,看起来像

DirectorID  FirstName   FamilyName          FullName           DoB  Gender
         1     Steven    Spielberg  Steven Spielberg    1946-12-18    Male
         2       Joel         Coen         Joel Coen    1954-11-29    Male
         3      Ethan         Coen        Ethan Coen    1957-09-21    Male
         4     George        Lucas      George Lucas    1944-05-14    Male
         5        Ang          Lee           Ang Lee    1954-10-23    Male
         6     Martin     Scorsese   Martin Scorsese    1942-11-17    Male
         7       Mimi        Leder        Mimi Leder    1952-01-26  Female
我正试图计算出女性导演与男性导演的比例

我可以使用以下公式计算出男性和女性导演的人数:

SELECT count(*) as myMale from Director 
where Gender = 'Male'
SELECT count(*) as myFemale from Director 
where Gender = 'Female')
但我很难将它们结合起来,以获得一定比例的女性导演

我希望得到14.3%的结果,其计算方法如下:

Total Female Directors / (Total Male Directors  + Total Female Directors)


如何使用SQL实现这一点?

一个简单的方法使用聚合。假设董事为男性或女性(二进制),那么简单的条件聚合就足够了:

select avg(case when gender = 'Female' then 1.0 else 0 end) as ratio_female
from directors;
如果您只想将此限制为
男性
女性
(假设有其他选项),则应将
中的性别(“女性”、“男性”)包括在内

select avg(case when gender = 'Female' then 1.0 else 0 end) as ratio_female
from directors;