9

次のクエリは、gender=Maleの同じ名前の人の数を返します。

select  lookup_name.firstname,count(lookup_name.firstname)
from lookup_name
where gender='M'
group by firstname

同様に、以下のクエリは、gender=Femaleの同じ名前の人の数を返します。

select  lookup_name.firstname,count(lookup_name.firstname)
from lookup_name
where gender='F'
group by firstname

名前を見つけて、性別(男性か女性か)をより多くカウントするクエリを作成する必要があります。つまり、データベース内のその名前の確率が高いのは、男性か女性か。

4

1 に答える 1

10
SELECT firstname, Male, Female,
       case when Male=Female then 'indeterminate'
            when Male>Female then 'probably male'
            else 'probably female' end MostProbablySex
FROM (
    select firstname,
           SUM(case when gender='M' then 1 else 0 end) Male,
           SUM(case when gender='F' then 1 else 0 end) Female
    from lookup_name
    group by firstname
) X;

またはシングルパス:

select firstname,
       CASE SIGN(2.0 * SUM(case when gender='M' then 1 else 0 end) / COUNT(*) - 1)
       WHEN -1 then 'probably female'
       WHEN 0 then 'indeterminate'
       WHEN 1 then 'probably male'
       END
from lookup_name
group by firstname;
于 2012-12-11T10:11:14.620 に答える