2012-12-11 28 views
5

Helo, Poniższe zapytanie zwraca liczbę osób o tej samej nazwie z płcią = mężczyzna.Sql Zagnieżdżona grupa przez

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

Podobnie, poniższe zapytanie zwraca liczbę osób o tej samej nazwie z płcią = Kobieta.

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

teraz chcę zrobić zapytanie, które dowie się imię i powiedzieć płeć (czy mężczyzna lub kobieta) z większą liczbą. tj. większe prawdopodobieństwo tej nazwy w bazie danych to bycie mężczyzną czy kobietą?

Odpowiedz

4
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; 

lub pojedynczy karnet:

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; 
+1

Dziękuje tyle: D Ci rozwiązać mój problem :) thats greattt: D – ssbb

+0

w bazie danych dane są brudne data jest podana w ciągu i w różny różne formaty ... chcę standaryzować datę w formacie daty sql, aby wyczyścić całą kolumnę daty ... w jaki sposób mogę to zrobić? – ssbb

+0

WYBIERZ podłańcuch (Student.Student_Name, 1, CHARINDEX (", Student.Student_Name, 0)), Mężczyzna, Kobieta, przypadek, gdy Mężczyzna = Kobieta, następnie" Równy " , gdy Mężczyzna> Kobieta to" M " inaczej" F 'end MostProbablyGender Z ( wybierz podłańcuch (Student.Student_Name, 1, CHARINDEX (' ', Student.Student_Name, 0)), SUMA (przypadek, gdy Gender =' M ', a następnie 1 else 0 koniec) Mężczyzna, SUMA (przypadek, gdy płeć = "F", a następnie 1 koniec 0) Kobieta z grupy studentów według podłańcucha (Student.Student_Name, 1, CHARINDEX (", Student.Student_Name, 0)) ) X; błąd W kolumnie 1 "X" nie podano nazwy kolumny. – ssbb