Как разделить один столбец по полу на мужчин и женщин, а затем найти их сумму в SQL Server? - PullRequest
0 голосов
/ 08 ноября 2019

Как разделить колонку по полу на мужчин и женщин, а затем найти общую сумму?

SELECT
    SUM(Gender = 'm') AS male,
    SUM(Gender = 'f') AS female 
FROM 
    HumanResources.Employee;

SELECT
    [HumanResources].[Employee].[Gender],
    SUM(case when Gender = 'M' then 1 end ) AS male,
    SUM(case when Gender = 'F' then 1 end) AS Female
FROM 
    [HumanResources].[Employee];

SELECT
    [Gender],
    CASE WHEN Gender = 'M' then 'Male' when Gender = 'F' end
FROM
    [HumanResources].[Employee]

Я пробовал три разных стиля ....

Включены атрибуты name, пол, роли и т. д., как показано выше, где я пытался ее решить, но это показывало какую-то ошибку!

Ответы [ 2 ]

2 голосов
/ 08 ноября 2019

вам нужно сгруппировать по

SELECT [HumanResources].[Employee].[Gender]
        , SUM(case when Gender = 'M'
        then 1 else 0 end ) AS male
        , SUM(case when Gender = 'F'
        then 1 else 0 end) as Female
    FROM [HumanResources].[Employee]
group by [HumanResources].[Employee].[Gender]

, но я думаю, что вам не нужно снова выбирать пол, как уже было сказано в условии, чтобы вы могли сделать

SELECT 
        SUM(case when Gender = 'M'
        then 1 else 0 end ) AS male
        , SUM(case when Gender = 'F'
        then 1 else 0 end) as Female ,count(*) as total
    FROM [HumanResources].[Employee]
1 голос
/ 08 ноября 2019

Использовать условное агрегирование:

SELECT
    EmployeeName,
    COUNT(CASE WHEN Gender = 'M' THEN 1 END) AS male,
    COUNT(CASE WHEN Gender = 'F' THEN 1 END) AS female
FROM [HumanResources].[Employee]
GROUP BY
    EmployeeName;

Обратите внимание, что я предполагаю, что столбец, который определяет идентификатор сотрудника, равен EmployeeName. Вы можете заменить это чем-то другим из вашей реальной таблицы. Дело в том, что для того, чтобы это работало, нам нужно агрегировать по столбцу с уникальным идентификатором сотрудника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...