Как я могу сделать запрос, чтобы получить соотношение?

#sql #sql-server #tsql

Вопрос:

 SELECT   sex, SUM(total) AS total FROM  (SELECT   games, sex, COUNT(sex) AS total  FROM   dbo.athlete_events$  GROUP BY   sex, games  -- ORDER BY 1   ) a GROUP BY   sex  

введите описание изображения здесь

Как я могу сделать запрос, который даст мне соотношение мужчин и женщин? В этом примере результат должен быть 196594/74522, то есть 2,64.

Комментарии:

1. Вы хотите получить результат 122072 ?

2. Я хочу получить результат 2,64

Ответ №1:

Вы можете попытаться опираться на следующее:

 select Sum(Iif(sex='M',1.0,0)) / Sum(Iif(sex='M',0,1.0)) from dbo.athlete_events$  

Обратите внимание на использование 1.0 в противном случае вы бы просто получили целочисленное деление.

Ответ №2:

Вы могли бы попробовать:

 select  sum(case when sex='F' then 1.0 else 0.0 end) / sum(case when sex='M' then 1.0 else 0.0 end) from (... your subquery...)  

Ответ №3:

Использование с было бы полезно для этого запроса

 WITH t AS (  --- your query in parenthesis  SELECT   games, sex, COUNT(sex) AS total  FROM   dbo.athlete_events$  GROUP BY   sex, games ) SELECT  t1.sex, t1.total, t2.sex, t2.total,  CAST(t1.total AS float) / t2.total  AS ratio_of_Male_to_Female FROM  t t1 LEFT JOIN  t t2 ON t1.games = t2.games WHERE   t1.sex = 'M' AND t2.sex = 'F'