Сравните количество данных в одном столбце в той же таблице и отобразите большее значение - PullRequest
0 голосов
/ 08 мая 2020

Я хотел подсчитать одно и то же поле для разных значений, например:

user {user_id, пол}

Пол может иметь явно мужской или женский:)

я хочу подсчитать для всех мужчин и женщин, т.е.

COUNT(male)   COUNT(female)  
   4               16

, но я запутался, потому что они происходят из столбца того же пола, спасибо

ТАКЖЕ, я хочу, чтобы результат был только отобразить большее количество. Как

COUNT(female)
16

1 Ответ

1 голос
/ 08 мая 2020

Попробуйте следующее, используя оператор case.

select
    sum(case when gender = 'male' then 1 else 0 end) as total_male,
    sum(case when gender = 'female' then 1 else 0 end) as total_female
from user

Если вы используете MySQL, используйте следующий

select
    sum(gender = 'male') as total_male,
    sum(gender = 'female') as total_female
from user

Если вы используете PostgreSQL, используйте filter

select
    count(1) filter (where gender = 'male') as total_male,
    count(1) filter (where gender = 'female') as total_female
from user

Вы можете получить окончательный результат, выполнив следующий запрос. вот демонстрация .

select
    case 
        when total_male < total_female then total_female
        else total_male
    end as total_count
from
(
  select
    count(1) filter (where gender = 'male') as total_male,
    count(1) filter (where gender = 'female') as total_female
 from users
)  t
...